¿Qué algoritmo encajaría mejor para resolver un juego de búsqueda de palabras como "Boggle" con Python?

Estoy codificando un juego similar aSobresaltarse donde el jugador debe encontrar palabras dentro de una cadena grande hecha de letras aleatorias.

Por ejemplo, hay cinco matrices con cadenas dentro de esta manera. Cinco filas, hechas de seis letras cada una:

AMSDNS
MASDOM
ASDAAS
DSMMMS
OAKSDO

Por lo tanto, los usuarios del juego deben hacer palabras usando las letras disponibles teniendo en cuenta las siguientes restricciones y reglas:

No es posible repetir la misma letra para hacer una palabra. Estoy hablando de la letra "física", en el juego que es un dado. No es posible usar el mismo dado dos veces o más para formar la palabra.No es posible "saltar" ninguna letra para formar una palabra. Las letras que forman la palabra deben ser contiguas.El usuario puede moverse en la dirección que desee sin ninguna restricción más allá de las dos mencionadas anteriormente. Así que es posible ir a la parte superior, luego a la parte inferior, luego a la derecha, luego a la parte superior de nuevo, y así sucesivamente. Así que los movimientos para buscar palabras pueden ser de alguna manera erráticos.

Quiero saber cómo pasar por todos los hilos para formar palabras. Para saber las palabras, voy a usar un archivo de texto con palabras.

No sé cómo diseñar un algoritmo que sea capaz de realizar la búsqueda, especialmente pensando en los movimientos erráticos que se necesitan para encontrar las palabras y respetando las restricciones, también.

Ya implementé el UX, la lógica para lanzar los dados y completar el juego de mesa, y toda la lógica para los dados de seis letras.

Pero esta parte no es fácil, y me gustaría leer sus sugerencias para este interesante desafío.

Estoy usando Python para este juego porque es el lenguaje que uso para codificar y el que más me gusta. Pero una explicación o sugerencia de un algoritmo en sí, también debería ser agradable, independientemente del idioma.

Respuestas a la pregunta(2)

Su respuesta a la pregunta