Археологи нашли ткань, украшенную вышивкой крестиком в несколько нитей. При этом были соблюдены следующие правила:
- На ткани есть сетка с квадратными ячейками.
- Каждый стежок покрывает диагональ одной ячейки сетки. Стежки могут находиться с обеих сторон ткани, но каждый из них расположен только с одной стороны ткани (нить может начинаться, заканчиваться и пересекаться с тканью только в вершинах сетки).
- На каждой диагонали каждой ячейки с каждой стороны ткани может располагаться максимум один стежок.
- Каждой нитью можно выполнить нескольких стежков, расположенных поочередно на разных сторонах ткани. (Это означает, что два последовательных стежка, образованных одной нитью, находятся с разных сторон ткани и соединяются в вершине сетки).
- Игла может пройти сквозь ткань только в вершинах сетки.
На рисунке показан пример узора, выполненного шестью стежками. Сетка имеет размер 4 × 5. Лицевая сторона ткани представлена на верхней половине рисунка. Стежки, лежащие на лицевой стороне, нарисованы сплошными линиями. Стежки изнаночной стороны, не закрытые теми, что на лицевой стороне, нарисованы пунктирными линиями. На нижней половине рисунка ткань расположена так же, что и на верхней половине. Все изнаночные стежки на нижней половине рисунка обозначены сплошными линиями. Лицевые стежки, которые не закрыты стежками изнаночной стороны, изображены пунктирными линиями. Этот узор не может быть сделан менее чем четырьмя нитями.
Археологи хотят выяснить, был ли узор сделан с наименьшим количеством нитей. Необходимо написать программу, которая определит минимальное количество нитей, необходимых для создания данного узора.
Исходные данные
Первая строка содержит целые числа N и M – вертикальный (N) и горизонтальный (M) размеры сетки (1 ≤ N, M ≤ 200). Каждая из следующих 2N строк содержит M символов. Каждый символ описывает один квадрат сетки. Первые N строк соответствуют лицевой стороне ткани, а последние N строк – изнанке ткани. Используются символы «.», «/», «\» и «X» (точка обозначает пустой квадрат).
Более подробную информацию смотрите в примере. Он соответствует ткани, нарисованной на рисунке.
Результат
Выведите минимальное количество нитей, необходимых для создания описанного шаблона.
Пример
исходные данные | результат |
---|
4 5
.....
.\...
..\..
.....
.....
....\
.\X..
.....
| 4
|
Автор задачи: Павел Залецкий
Источник задачи: III командный студенческий чемпионат Урала по программированию. 1999 г.