C. Три государства
ограничение по времени на тест
5 секунд
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Опасаясь приближения мирового экономического кризиса, государства Бермания, Беранция и Берталия заключили союз и разрешили жителям всех входящих в него государств беспрепятственный проход по территории любого из них. Дополнительно было решено построить дороги между государствами так, чтобы из любой точки любого государства можно было добраться до любой точки любого другого государства.

Так как дороги всегда обходятся недёшево, правительства государств новообразованного союза попросили вас помочь им оценить затраты. Для этого вам была выдана карта, которая представляет собой клетчатый прямоугольник из n строк по m клеток в каждой. Любая клетка карты либо принадлежит одному из трёх государств, либо является областью, на которой можно построить дорогу, либо является областью, на которой дорогу построить нельзя. Проходимыми являются все клетки, принадлежащие государствам, а также все клетки, в которых построены дороги. Из любой проходимой клетки можно перемещаться вверх, вниз, вправо и влево, если соответствующая такому перемещению клетка существует и является проходимой.

Требуется построить дороги в минимальном количестве клеток так, чтобы стало возможным добраться из любой клетки любого государства до любой клетки любого другого государства.

Гарантируется, что изначально из любой клетки любого государства можно добраться до любой клетки этого же государства, перемещаясь только по его клеткам. Также гарантируется, что на карте присутствует хотя бы одна клетка каждого государства.

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

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

Следующие n строк содержат по m символов каждая и описывают строки карты. Цифры от 1 до 3 означают принадлежность соответствующему государству. Символ '.' соответствует клетке, на которой можно построить дорогу, а символ '#' соответствует клетке, на которой дорогу построить нельзя.

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

Выведите единственное целое число — минимальное количество клеток, в которых необходимо построить дороги, чтобы соединить все клетки всех государств. Если это сделать невозможно, то выведите -1.

Примеры
Входные данные
4 5
11..2
#..22
#.323
.#333
Выходные данные
2
Входные данные
1 5
1#2#3
Выходные данные
-1