만드는 중입니다

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

외계어 (작은 입력)

면접 대비

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

요약
각 패턴은 단일 문자나 문자 묶음으로 이루어지며, 사전에 있는 D개의 단어 중 패턴에 맞는 단어의 수를 센다.
난이도

쉬움10점 중 3점

유형
문자열, 완전 탐색, 구현
정답자
아직 제출이 없습니다

문제

연구진이 먼 행성에서 보내온 외계어를 해독했다. 이 언어의 단어는 모두 정확히 L개의 소문자로 이루어지고, 사전에 실린 단어는 정확히 D개다.

사전을 다 만든 뒤, 연구진은 외계인이 지난 10년 동안 지구로 신호를 보내왔다는 사실을 알아냈다. 두 행성 사이의 거리 때문에 신호가 약해져서 일부 글자는 잘못 읽힐 수 있다. 그래서 주어진 패턴을 몇 가지로 해석할 수 있는지 세는 프로그램이 필요하다.

패턴은 정확히 L개의 토큰으로 이루어진다. 각 토큰은 소문자 한 글자이거나, 서로 다른 소문자 여러 개를 괄호 (와 )로 감싼 묶음이다. 한 글자짜리 토큰은 그 자리의 글자가 확실하다는 뜻이고, 묶음은 그 자리의 글자가 묶음 안의 글자 중 하나라는 뜻이다. 예를 들어 (ab)d(dc)는 첫 글자가 a 또는 b, 둘째 글자가 d, 셋째 글자가 d 또는 c라는 뜻이므로 add, adc, bdd, bdc 네 가지를 나타낸다.

패턴마다 사전의 단어 중 그 패턴과 맞는 단어가 몇 개인지 구하라.

입력

첫 줄에 정수 L, D, N이 공백으로 구분되어 주어진다. 다음 D개의 줄에는 길이가 L인 단어가 한 줄에 하나씩 주어진다. 이 단어는 외계어에 실제로 있다고 알려진 단어이며 모두 서로 다르다. 이어서 N개의 줄에 패턴이 한 줄에 하나씩 주어진다.

제한

  • 1≤L≤101 \le L \le 10
  • 1≤D≤251 \le D \le 25
  • 1≤N≤101 \le N \le 10

출력

패턴마다 다음 형식으로 한 줄씩 출력한다.

Case #X: K

X는 패턴의 번호로 1부터 시작하고, K는 그 패턴과 맞는 사전 단어의 개수다.

예제2

  1. 예제 1

    입력
    3 5 4
    abc
    bca
    dac
    dbc
    cba
    (ab)(bc)(ca)
    abc
    (abc)(abc)(abc)
    (zyx)bc
    
    예상 출력
    Case #1: 2
    Case #2: 1
    Case #3: 3
    Case #4: 0
    
  2. 예제 2

    입력
    1 1 1
    a
    a
    
    예상 출력
    Case #1: 1