Solving Mazes in Python: Depth-First Search, Breadth-First Search, & A*