Cell Tower to ciekawa codzienna gra logiczna: https://www.andrewt.net/puzzles/cell-tower/.
Rozważamy tutaj uproszczoną wersję. Dany jest kwadrat $8\times8$ z jednym znakiem w każdym polu oraz słownik. Podziel kwadrat na kilka części tak, aby każda część była spójnym blokiem, a znaki w tym bloku (od góry do dołu i od lewej do prawej) tworzyły poprawne słowo (czyli występujące w słowniku).
Dwa pola $A,B$ nazywamy połączoną parą, jeśli bezpośrednio mają wspólny bok lub istnieje inne pole $C$ takie, że zarówno $A,C$, jak i $B,C$ są połączonymi parami.
Grupę pól nazywamy spójnym blokiem, jeśli dowolne dwa pola w tej grupie są połączoną parą, a rozmiar grupy wynosi $3$ lub $4$.
Wejście
Każdy z pierwszych $8$ wierszy wejścia zawiera $8$ liczb całkowitych $Sq_{i,j}$ ($0\le Sq_{i,j}\le9$), opisujących dany kwadrat $8\times8$.
W następnym wierszu znajduje się jedna liczba całkowita $n$ ($1\le n\le11000$), oznaczająca rozmiar słownika.
W następnych $n$ wierszach znajduje się po jednym napisie $S_i$ ($3\le|S_i|\le4$), opisującym słowo w słowniku. Alfabet $S_i$ to $\{0,1,2,3,4,5,6,7,8,9\}$.
Wyjście
Wypisz liczbę poprawnych podziałów.
Przykład
Wejście 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
Wyjście 1
2