Haskell - Calculando el camino más corto usando árboles

Estoy tratando de escribir un código en haskell, que va del punto A al punto F, en un juego de mesa, que es esencialmente una Matriz, siguiendo el camino más corto.

Este es el tablero:

AAAA
ACCB
ADEF
*
0 0 N

El robot ingresa en la letra A, en la parte inferior (donde está el *), y debe llegar a F, en la parte inferior del tablero están las coordenadas, x = 0, y = 0, y apuntando hacia el norte. La coordenada F es (3,0)

El truco es que no puede saltar más de una letra, puede ir de A a B, B a C, etc. y puede caminar a través de las letras del tipo (A a A, B a B, etc.)

Solo puede avanzar y girar (izquierda, derecha), por lo que el camino para dejarme ir a F sería

Adelante, adelante, derecha, adelante, adelante, adelante, derecha, salto, derecha, salto, adelante, izquierda, salto, izquierda, adelante, adelante

Una vez que alcanza F, está hecho.

Quiero probar este enfoque, usando un árbol

                  A
                 / \
                A   D
               / \ 
              /   \
             A     C
            / \   / \
           /   \ D   C
          A     
         / \  
        /   \ 
       A
      /
     /
    A
   / \
  B   A
 / \  
C   F 

Después de eso, solo necesitaría validar la ruta correcta y la más corta, ¿verdad?

El problema es que no tengo mucha experiencia usando árboles.

¿Indicarías alguna otra forma de obtener el mejor camino?

Muchas gracias .

Respuestas a la pregunta(1)

Su respuesta a la pregunta