뒤섞인 패턴 맞추기

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

패턴은 영어 소문자와 밑줄 _로 이루어진 문자열이다. 밑줄 하나는 아무 글자 하나와 맞는다.

패턴의 글자를 마음대로 뒤섞은 결과가 단어의 어떤 부분 문자열과 같아지면 그 단어는 패턴과 맞는다고 한다. 길이가 pp인 패턴과 단어 ww에 대해 다시 말하면, ww에서 길이가 pp인 부분 문자열을 하나 골라 패턴의 각 글자를 그 부분 문자열의 서로 다른 자리에 하나씩 놓을 수 있으면 맞는 것이다. 글자는 같은 글자가 있는 자리에 놓고, 밑줄은 남은 자리 어디에 놓아도 된다.

예를 들어 패턴 catcat을 부분 문자열로 갖는 cat, scat, cater와 맞는다. 글자를 뒤섞어도 되므로 cat의 순열을 부분 문자열로 갖는 tacit, latch, fact와도 맞는다. 패턴 cat_c, a, t에 아무 글자 하나를 더해 만든 길이 4짜리 부분 문자열을 갖는 단어와 맞으므로 track, cant, crate와 맞는다.

단어 목록이 주어질 때 패턴과 맞는 단어가 몇 개인지 세는 프로그램을 작성하시오.

입력

입력은 테스트 여러 개로 이루어진다.

각 테스트는 찾을 패턴이 적힌 줄로 시작한다. 패턴은 영어 소문자와 밑줄로만 이루어지고, 길이 pp1p<1001 \le p < 100이다. 점 하나 .만 적힌 줄이 나오면 전체 입력이 끝난다.

패턴 다음 줄부터는 단어 목록이 이어진다. 각 줄은 그 줄에 있는 단어의 개수 kk (1k101 \le k \le 10)로 시작하고, 그 뒤에 단어 kk개가 공백 하나로 구분되어 나온다. 단어는 영어 소문자로만 이루어지고, 길이 mm1<m<201 < m < 20이다. 단어 개수로 00이 적힌 줄이 나오면 그 테스트가 끝나고 다음 줄부터 새 테스트가 시작된다.

출력

테스트마다 한 줄씩 Test x: y 형식으로 출력한다. xx는 1부터 순서대로 붙인 테스트 번호이고, yy는 그 테스트에 나온 단어 중 패턴과 맞는 단어의 개수이다. 같은 단어가 여러 번 나오면 나온 횟수만큼 센다.