Жителi однiєї невеликої острiвної країни звертаються до юних програмiстiв по допомогу - необхiдно знайти найбiльш економний шлях для об'єднання дрiбних островiв. Всi острови, якi жителi планують з'єднати, розбитi на пари. На планi острови показанi символами " \(X\) " . План має розмiри \(N\) х \(M\) . Два символи " \(X\) " належать одному острову, якщо вони мають спiльну сторону по горизонталi чи вертикалi. Дiагональне сусiдство не є умовою належностi одному острову. Знайдiть мiнiмальну кiлькiсть клiтинок на картi, якi вкажуть оптимальний шлях для злиття островiв.
Формат вхiдних даних
Перший рядок вхiдного потоку мiстить цiлi числа \(N; M\) \(1 ⩽ N; M ⩽ 50\) .
Наступнi \(N\) рядкiв мiстять по \(M\) символiв " \(X\) " або "." - "\(X\)" показує на частину острова, а " . " помiчає на картi воду.
Формат вихiдних даних
Мiнiмальну кiлькiсть символiв " \(X\) " , якi треба добавити на картi мiж островами для їх об'єднання.
Приклад вхідних даних
6 16
................
..XXXX....XXX...
...XXXX....XX...
.XXXX......XXX..
........XXXXX...
.........XXX....
Приклад вихідних даних
3
Пояснення
................
..XXXX....XXX...
...XXXX*...XX...
.XXXX..**..XXX..
........XXXXX...
.........XXX....
На мiсце "*" треба поставити символ "X" для оптимального злиття островiв.
Коментарі
Рішення для двох островів спрацювало, тому я так розумію, що так
так
"... острови, якi жителi планують з'єднати, розбитi на пари. ..." Це означає, що у вхідних даних буде лиш два острови?