Лабиринт

Карта лабиринта задана матрицей N×M, в которой 0 обозначает пустую клетку, а −1 обозначает стену. Вы стартуете в точке с координатами (x=1; y=0) и на каждом ходу можете перейти на пустую соседнюю точку, расположенную справа, слева, сверху или снизу. Нужно реализовать функцию solution, прокладывающую маршрут до выхода.

Выходов может быть несколько. Точки выхода всегда удовлетворяют условию y=M.

Дополнительная задача: сделать пошаговую визуализацию выполнения алгоритма.