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

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

별표가 있는 시

면접 대비

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

요약
별표 하나가 들어간 각 질의마다 앞부분으로 시작하고 뒷부분으로 끝나며 서로 겹치지 않는 사전 단어 수를 셉니다.
난이도

보통10점 중 5점

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

문제

어떤 이국적인 언어에는 영어 소문자로 이루어진, 서로 다른 비어 있지 않은 단어가 NN개 있다.

이 언어에는 다른 어떤 언어에서도 볼 수 없는 독특한 성질이 있다. 글로 쓸 때 별표(*)라는 특별한 기호를 사용하는데, 이 기호는 한 단어에서 연속된 임의의 (비어 있을 수도 있는) 조각을 대신할 수 있다. 그래서 적힌 단어는 여러 뜻으로 읽히게 되고, 이 언어로는 유난히 깊이 있는 시를 쓸 수 있다. 일상생활은 번거로워지지만, 결국 예술은 삶보다 중요하다.

언어의 모든 단어 목록(별표 없이 온전한 형태로 주어진다)과, 각 단어에 별표가 정확히 하나씩 들어 있는 시의 본문이 주어진다. 시의 각 단어에 대응하는 언어 단어가 몇 개인지 구하여라.

정확히 말하면, 시의 한 단어는 접두사 PP, 별표, 접미사 SS의 순서로 이루어진다(양쪽 모두 비어 있을 수 있다). 이 단어는 언어 단어 WW가 PP로 시작하고 SS로 끝나며 ∣W∣≥∣P∣+∣S∣|W| \ge |P| + |S|를 만족할 때에만 대응한다(별표가 가린 조각이 올바른 연속 구간이 되어야 하기 때문이다).

예를 들어 언어에 단어 zupa, z, malpy, intruz, pyszny가 있다면, 시 z*, m*y, g*ingo에서 첫 번째 시 단어에는 두 개, 두 번째에는 한 개, 세 번째에는 하나도 대응하지 않는다(인쇄 오류가 있었던 모양이다).

입력

첫 번째 줄에 테스트 집합의 개수를 나타내는 자연수 ZZ (1≤Z≤101 \le Z \le 10)가 주어진다. 이어서 각 테스트 집합이 차례로 주어진다.

각 테스트 집합의 첫 번째 줄에는 언어의 단어 개수를 나타내는 자연수 NN (1≤N≤1000001 \le N \le 100000)이 주어진다.

다음 NN개의 줄에는 언어의 단어가 한 줄에 하나씩 주어진다. 단어들은 서로 다르며, 각각 영어 소문자 1개 이상 10개 이하로 이루어진다.

그다음 줄에는 시의 단어 개수를 나타내는 자연수 KK (1≤K≤1000001 \le K \le 100000)가 주어진다.

다음 KK개의 줄에는 시의 단어가 한 줄에 하나씩 주어진다. 이 단어들은 서로 다를 필요는 없으며, 각각 1개 이상 10개 이하의 문자로 이루어지고 그중 정확히 하나가 별표, 나머지는 영어 소문자이다.

출력

각 테스트 집합마다 KK개의 줄을 출력한다. 그중 ii번째 줄에는 시의 ii번째 단어에 대응하는 언어 단어의 개수를 출력한다.

예제3

  1. 예제 1

    입력
    1
    5
    zupa
    z
    malpy
    intruz
    pyszny
    3
    z*
    m*y
    g*ingo
    
    예상 출력
    2
    1
    0
    
  2. 예제 2

    입력
    1
    3
    a
    bb
    ccc
    5
    *
    a*
    *c
    b*b
    c*c
    
    예상 출력
    3
    1
    1
    1
    1
    
  3. 예제 3

    입력
    1
    3
    a
    aa
    aaa
    6
    a*a
    a*
    *a
    a*aa
    aa*a
    aaa*a
    
    예상 출력
    2
    3
    3
    1
    1
    0