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

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

야만인의 돌판

시간 제한4초메모리 제한768 MB

요약
보여준 단어들 중 S번 야만인의 비문 단어를 부분 문자열로 포함하는 단어 수를 각 질문마다 구합니다.
난이도

보통10점 중 7점

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

문제

세상에는 특이한 사람이 많다. 그중에서도 우리가 가장 관심 있게 보는 쪽은 야만인이다.

야만인은 아주 많지만, 이 이야기에서 중요한 야만인은 NN명이고 1번부터 NN번까지 번호가 붙어 있다. 야만인마다 돌판이 하나씩 있고, 그 돌판에는 영어 소문자로만 이루어진 단어가 하나 새겨져 있다.

야만인은 친구 타잔과 게임을 한다. 게임은 QQ개의 라운드로 진행되고, 각 라운드의 종류는 타잔이 정한다.

  • 첫 번째 종류: 타잔이 야만인에게 단어 PP를 보여 준다.
  • 두 번째 종류: 타잔이 SS번 야만인에게 묻는다. "지금까지 내가 보여 준 단어 중에서 네 돌판에 새겨진 단어를 연속한 부분 문자열로 포함하는 단어는 몇 개인가?"

야만인은 쉽게 흥분해서 게임을 제대로 따라가지 못한다. 타잔의 질문마다 정답을 대신 구해 주자.

입력

첫 줄에 야만인의 수 NN (1≤N≤1051 \le N \le 10^5)이 주어진다.

다음 NN개의 줄에는 영어 소문자로만 이루어진 단어가 한 줄에 하나씩 주어진다. ii번째 줄의 단어는 ii번 야만인의 돌판에 새겨진 단어다.

그 다음 줄에 라운드의 수 QQ (1≤Q≤1051 \le Q \le 10^5)가 주어진다.

이어지는 QQ개의 줄은 각각 한 라운드를 설명한다. 각 줄은 정수 OO로 시작한다.

OO가 1이면 첫 번째 종류의 라운드이고, 같은 줄에 타잔이 보여 준 단어 PP가 이어진다. PP는 영어 소문자로만 이루어져 있다.

OO가 2이면 두 번째 종류의 라운드이고, 같은 줄에 타잔이 질문한 야만인의 번호 SS (1≤S≤N1 \le S \le N)가 이어진다.

돌판에 새겨진 단어의 길이를 모두 더한 값은 2×1062 \times 10^6을 넘지 않는다.

타잔이 보여 주는 단어의 길이를 모두 더한 값도 2×1062 \times 10^6을 넘지 않는다.

출력

두 번째 종류의 라운드마다 한 줄에 답을 하나씩 출력한다. ii번째 줄에는 ii번째로 나온 두 번째 종류의 라운드에서 타잔이 한 질문의 답을 출력한다.

같은 단어를 여러 번 보여 주면 보여 준 횟수만큼 따로 센다. 돌판의 단어가 보여 준 단어 하나 안에서 여러 번 나타나도 그 단어는 한 번만 센다. 아직 보여 준 단어가 없으면 답은 0이다.

힌트

첫 번째 예제에서 타잔이 보여 준 단어는 abca뿐이다. 첫 질문의 답은 1이다. 단어 a는 abca의 부분 문자열이다. 두 번째 질문의 답도 1이다. 단어 abc도 abca의 부분 문자열이다.

예제2

  1. 예제 1

    입력
    3
    a
    bc
    abc
    3
    1 abca
    2 1
    2 3
    
    예상 출력
    1
    1
    
  2. 예제 2

    입력
    7
    abba
    bbaa
    b
    bbaa
    abba
    a
    ba
    7
    1 aaabbabbaab
    2 7
    1 baabaaa
    1 aabbbab
    2 3
    1 aabba
    2 3
    
    예상 출력
    1
    3
    4