아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

«아브라카다브라»

시간 제한8초메모리 제한1024 MB

요약
각 패턴 s에 대해 s가 접두사이면서 접미사인 사전 단어 t의 개수를 센다. 단어와 패턴 길이는 50 이하이다.
난이도

어려움10점 중 8점

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

문제

문자열 ss가 문자열 tt의 슈프레픽스(suprefix)라는 것은 tt가 ss로 시작하고 ss로 끝난다는 뜻이다. 예를 들어 «abra»는 문자열 «abracadabra»의 슈프레픽스이다. 특히 문자열 tt 자체도 자기 자신의 슈프레픽스이다. 슈프레픽스는 여러 문자열 알고리즘에서 중요한 역할을 한다.

이 문제에서는 슈프레픽스를 찾는 역문제를 풀어야 한다. nn개의 단어 t1,t2,…,tnt_1, t_2, \ldots, t_n으로 이루어진 사전과 mm개의 패턴 문자열 s1,s2,…,sms_1, s_2, \ldots, s_m이 주어진다. 각 패턴 문자열에 대해, 그 패턴이 슈프레픽스인 사전 단어의 개수를 구해야 한다.

주어진 nn, 사전의 nn개 단어 t1,t2,…,tnt_1, t_2, \ldots, t_n, 주어진 mm, 그리고 mm개의 패턴 문자열 s1,s2,…,sms_1, s_2, \ldots, s_m에 대해, 각 패턴 문자열마다 그 패턴이 슈프레픽스인 사전 단어의 개수를 계산하는 프로그램을 작성하시오.

입력

입력 파일의 첫째 줄에는 정수 nn이 주어진다 (1≤n≤200 0001 \le n \le 200\,000).

다음 nn개 줄에는 단어 t1,t2,…,tnt_1, t_2, \ldots, t_n이 한 줄에 하나씩 주어진다. 각 단어는 라틴 알파벳 소문자로 이루어진다. 각 단어의 길이는 50을 넘지 않는다. 모든 단어의 길이 합은 10610^6을 넘지 않는다. 사전에는 빈 단어가 없다.

그다음 줄에는 정수 mm이 주어진다 (1≤m≤200 0001 \le m \le 200\,000).

다음 mm개 줄에는 패턴 문자열 s1,s2,…,sms_1, s_2, \ldots, s_m이 한 줄에 하나씩 주어진다. 각 패턴 문자열은 라틴 알파벳 소문자로 이루어진다. 각 패턴 문자열의 길이는 50을 넘지 않는다. 모든 패턴 문자열의 길이 합은 10610^6을 넘지 않는다. 패턴 문자열 중 빈 문자열은 없다.

출력

출력 파일에는 mm개의 수가 한 줄에 하나씩 있어야 한다.

각 패턴 문자열에 대해, 입력 파일에 주어진 순서대로, 그 패턴이 슈프레픽스인 사전 단어의 개수를 출력한다.

예제1

  1. 예제 1

    입력
    4
    abacaba
    abracadabra
    aa
    abra
    3
    a
    abra
    abac
    
    예상 출력
    4
    2
    0