Кросворди#9688

Кросворди

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

Щоб залучити більше туристів до Парижа, Анна планує організувати масштабне світломузичне шоу вночі на фасадах Лувра. На фасадах розташовані вікна, розміщені на кількох рівнях і вирівняні як по горизонталі, так і по вертикалі.

Анні прийшла ідея відображати у вікнах величезні літери — по одній літері в кожному вікні — так, щоб утворювалися осмислені слова як по горизонталі, так і по вертикалі.

На одному фасаді вікна утворюють прямокутну сітку з рядків та стовпців.

Анна підготувала:

Ваше завдання — визначити, скількома різними способами можна заповнити сітку так, щоб:

Потрібно підрахувати кількість різних буквених сіток розміру n \times m, таких що:

Дві сітки вважаються різними, якщо вони відрізняються хоча б в одній клітинці.

Вхідні дані

Вхідні дані мають такий формат:

  • у першому рядку задано два цілі числа n~(2 \le n \le 4) і ;

  • у другому рядку задано два цілі числа m~(2 \le m \le 4) і b~(1 \le a \times b \le 1008016);

  • у наступних рядках записано слова довжини (вертикальні слова);

  • у наступних рядках записано слова довжини (горизонтальні слова).

Обмеження:

  • усі слова складаються тільки з малих англійських літер (–);

  • кожен список не містить повторюваних слів;

  • слова можуть використовуватися кілька разів у різних рядках або стовпцях.

Особливий випадок. Якщо n = m, то:

  • слово з вертикального списку не можна використовувати горизонтально, якщо воно також не присутнє у горизонтальному списку;

  • слово з горизонтального списку не можна використовувати вертикально, якщо воно також не присутнє у вертикальному списку.

Вихідні дані

Виведіть загальну кількість різних коректних буквених сіток.

Приклади

Приклад 1:

Приклад 2:

Приклад 1

Loading
Loading

Приклад 2

Loading
Loading