프로그래밍 대회

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

문제

프로그래밍 대회는 대회마다 출제되는 문제의 유형이 다르다. 예를 들어 TopCoder는 배열의 최대 크기가 50이다. 또한 IOI는 아이들이 참가하는 대회이기 때문에 Suffix Tree 문제는 나오지 않는다.

우현이는 서로 다른 $N$개의 프로그래밍 대회에 문제를 출제한다. 대회마다 필요한 문제 수는 서로 다르다. 예를 들어 ACM-ICPC 형식의 대회는 보통 10문제가, TopCoder SRM은 5문제가 필요하다.

우현이는 미리 $M$개의 문제를 준비해 두었고, 각 문제를 어떤 대회에 낼 수 있는지도 정해 두었다.

모든 대회를 동시에 개최한다고 할 때, 최대 몇 개의 대회를 실제로 열 수 있는지 구하여라. 대회를 열려면 그 대회에 필요한 문제 수를 모두 채워야 하고, 한 문제는 최대 한 대회에만 사용할 수 있다.

입력

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

각 테스트 케이스의 첫 줄에는 대회의 수 $N$과 준비한 문제의 수 $M$이 주어진다 ($1 \le N \le 15$, $0 \le M \le 50$).

이어지는 $N$개의 줄에는 각 대회의 이름과 그 대회를 열기 위해 필요한 문제 수가 주어진다. 대회 이름은 알파벳 대소문자와 숫자로 이루어지고 길이는 100자를 넘지 않으며, 대소문자를 구분한다. 필요한 문제 수는 100 이하이다.

그다음 $M$개의 줄에는 각 문제를 낼 수 있는 대회의 이름이 공백으로 구분되어 주어진다. 어떤 문제를 낼 수 있는 대회가 하나도 없으면 그 줄은 비어 있다.

입력의 마지막 줄에는 0이 두 개 주어지며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 동시에 개최할 수 있는 대회의 최대 개수를 케이스 번호와 함께 한 줄에 출력한다. $k$번째 테스트 케이스의 답이 $c$이면 Case #k: c 형식으로 출력한다.