Задача E. Полимино

Автор:Жюри ROI-2006   Ограничение времени:2 сек
Входной файл:poly.in   Ограничение памяти:64 Мб
Выходной файл:poly.out  
Максимальный балл:100  

Условие

Известный математик Соломон В. Голомб предложил название полимино для связной фигуры, вырезанной из клетчатой бумаги по линиям сетки. Фигура называется связной, если из любой ее клетки можно добраться в любую другую, переходя из клетки в клетку через их общую сторону. Шахматист, добавил Голомб, сказал бы, что из любой клетки полимино можно дойти ладьей в любую другую. На рис. 1 приведены примеры восьми полимино.

Саша увлекается полимино. Для своих экспериментов она вырезает новое полимино из бумаги в клеточку или из старых полимино, оставшихся после предыдущих попыток. Далеко не всегда из старого полимино (рис. 2а, слева) можно вырезать новое (рис. 2а, справа). Поэтому Саша может перед вырезанием нового полимино разделить каждую клетку старого полимино на K2 одинаковых квадратных клеток меньшего размера (см. рис. 2б, здесь K = 2).

Сашу заинтересовало, сколько существует различных способов вырезать новое полимино из старого при заданном значении K, если повороты, отражения и переворачивания как нового полимино, так и старого, недопустимы.

Например, на рис. 2б приведены все возможные способы вырезания полимино, приведенного на рис. 2а, при K = 2.

Напишите программу, которая ответит на интересующий Сашу вопрос.

Формат входного файла

Первая строка входного файла содержит число K (1 ≤ K ≤ 104).

Далее следуют описания двух полимино, сначала нового, затем старого. Каждое полимино задается следующим образом — в первой строке описания задаются размеры H (высота) и W (ширина) минимально возможного прямоугольника, в котором можно разместить данное полимино. Следующие Н строк содержат по W символов описания клеток. При этом клетка, входящая в полимино, обозначается символом "X" (прописная латинская буква "икс"), а не входящая — символом "." (точка). Количество клеток в каждом полимино не превышает 300.

Формат выходного файла

Выходной файл должен содержать одно число — количество различных способов вырезать заданное новое полимино из старого, каждая клетка которого разбита на K2 клеток.

Примеры тестов

Входной файл (poly.in) Выходной файл (poly.out)
1
2
3 2
XX
.X
.X
2 3
XXX
.X.
4
2
2
2 2
XX
XX
2 3
XXX
.X.
7
3
1
2 2
XX
XX
1 1
X
0

0.039s 0.007s 17