Coggle

5x5 글자 격자와 사전이 주어질 때, 같은 칸을 두 번 쓰지 않고 인접한 칸을 이어 만들 수 있는 사전 단어의 개수를 센다.

보통6백트래킹트라이DFS아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

휴가를 맞은 소들은 단어 게임 Boggle의 소 버전인 Coggle을 즐긴다. 글자가 적힌 주사위 25개를 굴려 다음과 같은 5×55 \times 5 격자를 만든다.

Z C C D X
K Q M N B
U O W Z Y
F C O I J
P A Q Z T

어떤 글자에서 시작해 인접한 (최대) 8개 칸 중 하나로 이동하는 일을 반복하고, 지나온 글자를 차례로 이었을 때 사전에 있는 단어가 되면 그 단어를 만든 것이다. 가로, 세로, 대각선으로 맞닿은 칸이 모두 인접한 칸이다. 한 단어 안에서 같은 주사위의 글자를 두 번 쓸 수는 없다.

위 격자에서 아래쪽 'C'로는 "CAP", "COW", "COOK"을 만들 수 있지만 "COD"나 "PACK"은 만들 수 없다. 원래 문제의 사전을 쓰면 위 격자에서 만들 수 있는 단어는 "CAP", "COOK", "COW", "OWN", "WIT", "WOO", "ZOO", "ZOOM"이 전부다.

주사위를 나타내는 다섯 줄의 글자와 사전이 주어질 때, 사전의 단어 중 몇 개를 만들 수 있는지 구해서 Bessie를 도와주자.

한 단어를 만드는 방법이 여러 가지일 수도 있다. 이때도 그 단어는 한 번만 센다.

입력

첫째 줄부터 다섯째 줄까지 격자가 주어진다. ii번째 줄에는 ii번째 행을 이루는 대문자 5개가 공백으로 구분되어 주어진다.

여섯째 줄에 사전의 단어 수 NN이 주어진다. (1N<250001 \le N < 25\,000)

다음 NN개 줄에는 사전의 단어가 한 줄에 하나씩 주어진다. 각 단어는 길이가 11 이상 2020 이하인 대문자 문자열이며, 모든 단어는 서로 다르다.

출력

첫째 줄에 사전의 단어 중 규칙에 따라 만들 수 있는 단어의 수를 출력한다.