만드는 중입니다

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

격자에서 문자열 찾기

시간 제한5초메모리 제한512 MB

요약
각 질의 문자열이 격자에서 오른쪽으로 이동한 뒤 아래로 이동하는 경로로 만들어지는 횟수를 셉니다.
난이도

보통10점 중 7점

유형
문자열 매칭, 트라이, 해시맵
정답자
아직 제출이 없습니다

문제

R행 C열로 이루어진 격자 GG가 있다. 행은 위에서 아래로 1번부터 R번까지, 열은 왼쪽에서 오른쪽으로 1번부터 C번까지 번호가 매겨져 있다. 각 칸에는 대문자 알파벳이 하나씩 적혀 있다. r행 c열 칸의 문자는 Gr,cG_{r,c}로 나타낸다. 대문자로만 이루어진 문자열 Q개가 주어진다. 각 문자열에 대해 격자에서 그 문자열이 나타나는 횟수를 구한다.

문자열 SS가 격자에서 한 번 나타난다는 것은, 어떤 칸에서 출발해 오른쪽으로 0번 이상 이동한 뒤 아래로 0번 이상 이동하면서 SS를 만들 수 있다는 뜻이다. SS를 만드는 데 쓰인 칸들의 집합이 다르면 서로 다른 등장으로 센다. 정확히는 각 SS에 대해 다음 조건을 만족하는 튜플 (r,c,Δr,Δc)(r, c, \Delta r, \Delta c)의 개수를 구한다.

1≤r≤R,r≤r+Δr≤R,1≤c≤C,c≤c+Δc≤C1 \le r \le R, \quad r \le r + \Delta r \le R, \quad 1 \le c \le C, \quad c \le c + \Delta c \le C

그리고

S=Gr,cGr,c+1⋯Gr,c+ΔcGr+1,c+Δc⋯Gr+Δr,c+ΔcS = G_{r,c}G_{r,c+1}\cdots G_{r,c+\Delta c}G_{r+1,c+\Delta c}\cdots G_{r+\Delta r,c+\Delta c}

입력

첫 줄에 정수 R, C, Q가 주어진다 (1≤R,C≤5001 \le R, C \le 500, 1≤Q≤200 0001 \le Q \le 200\,000). 이어지는 R줄에는 각각 대문자 C개가 주어진다. r번째 줄의 c번째 문자가 Gr,cG_{r,c}이다. 이어지는 Q줄에는 대문자로 이루어진 문자열 S가 한 줄에 하나씩 주어진다. 각 문자열의 길이는 1 이상 200 000 이하이고, Q개 문자열 길이의 합은 200 000 이하이다.

출력

입력 순서대로 각 질의에 대해, 격자에서 그 문자열이 나타나는 횟수를 한 줄에 하나씩 출력한다.

예제2

  1. 예제 1

    입력
    3 3 5
    ABC
    BCD
    DAB
    ABC
    BC
    BD
    AC
    A
    
    예상 출력
    2
    3
    1
    0
    2
    
  2. 예제 2

    입력
    2 3 3
    AAA
    AAA
    A
    AAA
    AAAAA
    
    예상 출력
    6
    4
    0