El camino más corto

Dada una cuadrícula rectangular de m por n espacios, representados por 0, y una cantidad de puntos, representados por 1, 2, 3..., devuelve el número de movimientos del camino más corto que comienza en 1 y recorre todos los demás puntos en orden ascendente.

Ejemplos

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

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

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

Notas

  • Solo se permiten movimientos horizontales y verticales.
  • Cada movimiento de un lugar a otro adyacente cuenta como 1, independientemente de la dirección.
  • Los puntos van del 1 al 9 como máximo, sin dígitos repetidos ni faltantes.