EduBrick

D. Кратчайший путь по карте

3000 мс · 256 МБ · всё или ничего

Дана карта из символов . (проходимо) и # (стена). Найдите длину кратчайшего пути из левой верхней клетки в правую нижнюю, двигаясь по проходимым клеткам вверх, вниз, влево и вправо.

Длина пути — количество шагов. Если стартовая или конечная клетка занята стеной, пути нет.

На прошлом занятии похожая задача решалась обходом в глубину — но там спрашивалось только, есть ли путь. Как только спросили про длину, обход в глубину перестаёт годиться.

Формат ввода

Первая строка содержит числа nn и mm (1≤n,m≤10001 \le n, m \le 1000).

Далее идут nn строк по mm символов.

Формат вывода

Одно число — длина кратчайшего пути или −1-1.

Примеры

ввод
3 3
...
.#.
...
вывод
4
ввод
2 2
.#
#.
вывод
-1
Войдите, чтобы отправлять решения.