DFSоBFS на гриде.

Дана клетчатая таблица размера WxH (1 <= W, H <= 80).
Нужно найти путь из клетки помеченной буквой 's' (или 'S') до клетки помеченной буквой 'e' (или 'E').
Ходить можно в 4-х направлениях. Сквозь стенки (на карте помечены, как '#') ходить нельзя.

Входные данные лежат в файле input.txt, формат файла - W (ширина), H (высота), табличка WxH - карта.
Вывести карту с нарисовнным путем прямо на экран.

(1) Найти произвольный путь (написать Depth First Search)
(2) Найти кратчайший путь (написать Breadth First Search)
(3) Нарисовать результат в 0x13-м режиме (и для dfs-а, и для bfs-а)

Пример:
6 4
...#.s
#....#
..#...
e...#.

Произвольный путь:
6 4
...#*s
#...*#
**#**.
e***#.

Кратчайший путь:
6 4
...#*s
#****#
**#...
e...#.