O caminho mais curto

Dada uma grade retangular de m por n espaços, representados por 0, e uma quantidade de pontos, representados por 1, 2, 3..., retorne o número de movimentos do caminho mais curto que começa em 1 e passa por todos os outros pontos em ordem crescente.

Exemplos

shortest_path([
  "001",
  "002",
  "003"
]) ➞ 2

shortest_path([
  "00000",
  "01006",
  "02000",
  "30050",
  "00004"
]) ➞ 13

shortest_path([
  "00020000",
  "01000000"
]) ➞ 3

Observações

  • Apenas movimentos horizontais e verticais são permitidos.
  • Cada movimento de um lugar para outro adjacente conta como 1, independentemente da direção.
  • Os pontos variam de 1 a no máximo 9, sem dígitos repetidos ou ausentes.