Cell Tower — цікава щоденна головоломка: https://www.andrewt.net/puzzles/cell-tower/.
Тут ми розглянемо спрощену версію. Дано квадрат $8\times8$ з одним символом у кожній клітинці та словник. Поділіть квадрат на кілька частин так, щоб кожна частина була зв’язним блоком, а символи в цьому блоці (згори вниз і зліва направо) утворювали допустиме слово (тобто наявне у словнику).
Дві клітинки $A,B$ називаються зв’язаною парою, якщо вони безпосередньо мають спільну сторону або існує інша клітинка $C$, така що і $A,C$, і $B,C$ є зв’язаними парами.
Група клітинок називається зв’язним блоком, якщо будь-яка пара клітинок цієї групи є зв’язаною парою, а розмір групи дорівнює $3$ або $4$.
Вхідні дані
Кожен із перших $8$ рядків вхідних даних містить $8$ цілих чисел $Sq_{i,j}$ ($0\le Sq_{i,j}\le9$), що задають даний квадрат $8\times8$.
Наступний рядок містить одне ціле число $n$ ($1\le n\le11000$), що позначає розмір словника.
Кожен із наступних $n$ рядків містить рядок $S_i$ ($3\le|S_i|\le4$), що описує слово зі словника. Алфавіт $S_i$ — $\{0,1,2,3,4,5,6,7,8,9\}$.
Вихідні дані
Виведіть кількість допустимих поділів.
Приклади
Вхідні дані 1
1 1 1 1 2 3 3 3 0 4 4 4 2 2 2 3 0 0 5 5 6 6 7 7 0 9 5 5 6 8 7 7 9 9 9 1 6 8 8 8 3 1 1 1 2 2 2 2 4 5 6 0 0 4 4 3 7 8 9 0 0 4 3 3 16 1111 2222 3333 444 0000 5555 6666 7777 8888 9999 111 333 3456 789 3478 569
Вихідні дані 1
2