스크래블

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

문제

스크래블은 타일로 하는 게임입니다. 각 타일에는 알파벳 한 글자가 적혀 있거나, 아무것도 적혀 있지 않은 빈 타일입니다. 빈 타일은 원하는 어떤 글자로든 사용할 수 있습니다. 자기 차례가 되면 타일을 배열해 단어를 만듭니다. 각 타일은 최대 한 번만 사용할 수 있고, 모든 타일을 사용할 필요는 없습니다. 여러 개의 스크래블 타일과 사전이 주어질 때, 사전에 있는 단어 중 주어진 타일로 만들 수 있는 단어가 몇 개인지 구하세요.

입력

입력은 여러 개의 테스트 케이스로 이루어집니다. 각 테스트 케이스의 첫 줄에는 사전에 들어 있는 단어의 개수를 나타내는 양의 정수 n1000n \le 1000 이 주어집니다. 이어지는 nn 개의 줄에는 각각 대문자 1개에서 7개로 이루어진 문자열이 하나씩 주어지며, 이는 사전의 단어입니다. 같은 단어가 두 번 등장하지는 않습니다. 그다음 줄에는 가지고 있는 타일을 나타내는 문자열이 하나 주어집니다. 대문자는 그 글자가 적힌 타일을, 밑줄(_)은 빈 타일을 뜻합니다. 이 문자열의 길이는 1 이상 7 이하이며, 같은 타일이 여러 번 나올 수 있습니다. 입력의 끝은 n=0n = 0 인 테스트 케이스로 표시되며, 이 케이스는 처리하지 않습니다.

출력

각 테스트 케이스마다, 주어진 타일로 만들 수 있는 사전 단어의 개수를 한 줄에 출력하세요.

힌트

첫 번째 예제에서 타일 _PIZA(빈 타일 1개와 P, I, Z, A)로 PIZZA는 PIZ_A, ZA는 ZA, PITA는 PI_A로 만들 수 있어 세 단어입니다. PROGRAM과 CONTEST를 만들기에는 타일이 부족합니다. 두 번째 예제에서 타일 A__AA__(A 타일 3개와 빈 타일 4개)로 BANANAS는 _A_A_A_, FIGS는 ____로 만들 수 있지만, CARROTS는 A 외에 빈 타일이 6개 더 필요하므로 만들 수 없어 두 단어입니다.