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

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

종혁과 문자열

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

요약
n개의 문자열이 주어질 때, 각 질의 문자열 Q에 대해 Q와 (패턴, 끝 위치) 등장 쌍의 집합이 같은 패턴의 부분 문자열 T의 개수를 구한다.
난이도

어려움10점 중 9점

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

문제

종혁이는 알파벳 소문자로 이루어진 문자열을 좋아한다. 어느 날 종혁이는 친구에게 문제를 하나 냈는데, 그 친구는 바로 당신이다. 종혁이는 당신 앞에서 nn개의 문자열 P1,P2,…,PnP_1, P_2, \ldots, P_n을 적은 다음, mm개의 질문을 했다.

문자열 SS를 생각하자. StrangeSet(S)\mathit{StrangeSet}(S)를, SS가 PiP_i의 부분문자열로서 위치 jj에서 끝나는 모든 쌍 (i,j)(i, j)의 집합으로 정의한다.

kk번째 질문에서 종혁이는 문자열 QkQ_k를 준다. StrangeSet(Qk)=StrangeSet(T)\mathit{StrangeSet}(Q_k) = \mathit{StrangeSet}(T)이고 TT가 주어진 nn개의 문자열 중 적어도 하나의 부분문자열인 서로 다른 문자열 TT의 개수를 구해야 한다.

입력

입력의 첫째 줄에 두 정수 nn과 mm이 주어진다 (1≤n≤1051 \le n \le 10^5, 1≤m≤5⋅1051 \le m \le 5 \cdot 10^5).

다음 nn개의 줄에 문자열 P1,P2,…,PnP_1, P_2, \ldots, P_n이 한 줄에 하나씩 주어진다 (1≤∣Pi∣≤1051 \le |P_i| \le 10^5).

그다음 mm개의 줄에 문자열 Q1,Q2,…,QmQ_1, Q_2, \ldots, Q_m이 한 줄에 하나씩 주어진다 (1≤∣Qk∣≤1051 \le |Q_k| \le 10^5).

n+mn + m개의 문자열은 모두 알파벳 소문자로 이루어져 있다.

입력에서 모든 ∣Pi∣|P_i|의 합은 10510^5을 넘지 않는다.

입력에서 모든 ∣Pi∣|P_i|와 모든 ∣Qk∣|Q_k|의 합은 2⋅1062 \cdot 10^6을 넘지 않는다.

출력

각 질문마다 답을 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    2 2
    aba
    ab
    a
    ab
    
    예상 출력
    1
    2