D. Змейка
ограничение по времени на тест
4 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Напомним правила одной очень популярной игры, которая называется «Змейка» (эта игра также известна как «Удав», «Питон» или «Червяк»).

Игровое поле представляет собой прямоугольную таблицу размера n × m. Некоторые клетки поля считаются непроходимыми (стены), все остальные клетки поля проходимы.

Вы управляете змейкой, которая состоит из сегментов. Каждый сегмент занимает ровно одну проходимую клетку поля, причем в любой проходимой клетке находится не более одного сегмента. Все сегменты пронумерованы целыми числами от 1 до k, где k — длина змейки. Сегмент с номером 1 называется головой, а с номером k — хвостом. Для любого i (1 ≤ i < k) клетки поля, в которых находятся сегменты с номерами i и i + 1, являются соседними, то есть имеют общую сторону.

В одной из проходимых клеток поля находится яблоко. Цель змейки — достичь яблока и съесть его (то есть сделать так, чтобы голова оказалась в той же клетке, где и яблоко).

В процессе игры змейка двигается. За один ход змейка может переместить голову в одну из соседних клеток поля. При этом все остальные сегменты подтягиваются за головой. То есть каждый сегмент с номером i (1 < i ≤ k) перемещается в клетку, где только что находился сегмент с номером i - 1. Считайте, что перемещение всех сегментов, включая голову, происходит одновременно (смотри второй тестовый пример). Если после хода голова змейки оказывается в непроходимой клетке или в клетке, в которой находится другой сегмент, то змейка умирает. Поэтому такие ходы мы будем считать недопустимыми.

Ваша задача — определить наименьшее количество допустимых ходов, необходимых для того, чтобы змейка достигла яблока.

Входные данные

В первой строке записаны два целых числа через пробел n и m (1 ≤ n, m ≤ 15) — количество строк и столбцов игрового поля.

В следующих n строках описано игровое поле. В каждой из этих строк записано по m символов. Символ «#» обозначает стену, «.» обозначает проходимую клетку, «@» обозначает яблоко. Сегмент змейки номер один обозначается символом «1», сегмент номер два — символом «2» и так далее.

Описание игрового поля не содержит никаких символов кроме «#», «.», «@» и цифр (кроме цифры 0). Гарантируется, что описанное поле корректно. Гарантируется, что на описанном поле находится ровно одно яблоко и ровно одна змейка, длина которой не меньше 3 и не больше 9.

Выходные данные

В выходной файл выведите единственное целое число — наименьшее количество ходов, необходимое для достижения яблока. Если яблока достичь невозможно, выведите -1.

Примеры
Входные данные
4 5
##...
..1#@
432#.
...#.
Выходные данные
4
Входные данные
4 4
#78#
.612
.543
..@.
Выходные данные
6
Входные данные
3 2
3@
2#
1#
Выходные данные
-1