Три штати#1061

Три штати

1 секунда
128 мегабайтів
Легка

На прямокутній карті розміром n \times m розташовані три штати. Гарантується, що у межах кожного штату можна дістатися з будь-якої клітини цього штату в будь-яку іншу клітину того ж штату, переміщаючись лише горизонтально або вертикально через клітини, що належать цьому штату. Клітини кожного штату позначені одним з чисел (1, 2 або 3).

На карті є прохідні клітини (.) та непрохідні клітини (#).

Потрібно прокласти дороги у мінімальній кількості прохідних клітин так, щоб стало можливо дістатися з будь-якої клітини одного штату до будь-якої клітини іншого штату. Усередині кожного штату можна пересуватися без обмежень. По карті можна пересуватися лише горизонтально або вертикально.

Вхідні дані

У першому рядку задано розмір карти та (1 \leq n, m \leq 1000). Кожен з наступних рядків містить по символів:

  • 1, 2, 3 — клітини, що належать штатам;

  • . — прохідна клітина, тут можна будувати дорогу;

  • # — непрохідна клітина, тут не можна будувати дорогу.

Вихідні дані

Виведіть мінімальну кількість клітин, у яких потрібно побудувати дороги, щоб усі клітини всіх штатів стали з'єднаними. Якщо це неможливо — виведіть -1.

Приклади

Приклад 1

Loading
Loading