10858. Заливка
Вася — програміст-початківець. Останньою його ідеєю було написати графічний редактор чорно-білих зображень. На жаль, натхнення вистачило лише на один інструмент – заливка.
У вікні редактора картинка відображається як прямокутна таблиця \(M \times N\) клітин; кожна пофарбована або в чорний або в білий колір. Дві клітини назвемо сусідніми, якщо вони мають спільну сторону. Областю будемо називати максимальну підмножину клітин одного кольору, таку, що з кожної можна потрапити в кожну, переміщаючись тільки по сусідніх клітинах цієї області.
Заливка працює наступним чином: користувач вказує на довільну клітину таблиці, після чого вся область, що містить цю клітину, перефарбовується на протилежний колір.
Тепер Вася хоче навчитися витирати зображення за допомогою свого редактора. Картинка вважається чистою, якщо вона повністю чорна, або повністю біла.
Визначте мінімальну кількість заливок, яка буде потрібна для того, щоб зробити з цього зображення чисте.
Формат вхідних даних
Вводяться два натуральні числа \(N, M\) (\(1 ≤ N ≤ 100\), \(1 ≤ M ≤ 100\)) — кількість рядків і стовпців у таблиці, що відповідає даному зображенню.
У наступних \(N\) рядках містяться по \(M\) символів. У \(i\)-му рядку і \(j\)-му стовпці стоїть 0, якщо відповідна клітина біла, і 1, якщо чорна.
Формат вихідних даних
Виведіть одне число — мінімальна кількість заливок, які потрібні для стирання цієї картинки.
Приклад вхідних даних
3 5
10101
01010
10101
Приклад вихідних даних
3
Коментарі