단어퍼즐 2

5x5 글자 격자와 최대 20000개의 사전 단어가 주어질 때, 같은 칸을 다시 밟지 않고 인접한 칸으로 이어서 만들 수 있는 단어의 수를 센다.

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

문제

5 x 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

위 퍼즐에서 CAP, COW, COOK은 찾을 수 있지만 COD, PACK은 찾을 수 없다.

퍼즐과 사전이 주어지면 사전의 단어 중 퍼즐에서 찾을 수 있는 단어가 몇 개인지 구한다.

입력

첫 다섯 줄에 5 x 5 퍼즐이 주어진다. 각 줄에는 대문자 알파벳 다섯 개가 공백으로 구분되어 있다.

여섯째 줄에 사전에 실린 단어의 개수 NN이 주어진다. (1N200001 \le N \le 20000)

이어지는 NN개 줄에 사전의 단어가 한 줄에 하나씩 주어진다. 각 단어는 길이가 1 이상 7 이하인 대문자 알파벳 문자열이고, 같은 단어가 두 번 주어지지는 않는다.

출력

사전의 단어 중 퍼즐에서 찾을 수 있는 단어의 개수를 첫 줄에 출력한다.