만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

단어퍼즐 2

시간 제한2초메모리 제한128 MB

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

보통10점 중 6점

유형
DFS, 백트래킹, 트라이
정답자
아직 제출이 없습니다

문제

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이 주어진다. (1≤N≤200001 \le N \le 20000)

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

출력

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

예제2

  1. 예제 1

    입력
    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
    18
    CAP
    COOK
    COW
    OWN
    WIT
    WOO
    ZOO
    ZOOM
    COD
    PACK
    QUICK
    ZONE
    BOY
    JOY
    CAB
    MAP
    NOW
    TOP
    
    예상 출력
    8
    
  2. 예제 2

    입력
    A B C D E
    F G H I J
    K L M N O
    P Q R S T
    U V W X Y
    12
    ABC
    AGM
    ABA
    EJO
    YXW
    AZ
    AFK
    ABCDEFG
    AGMSY
    MHCB
    OJE
    YY
    
    예상 출력
    8