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.