암호 충돌
면접 대비시간 제한20초메모리 제한1024 MB
알파벳 A부터 Z까지에 숫자를 대응시키는 규칙과 단어 목록이 주어질 때, 서로 다른 두 단어가 같은 숫자열로 바뀌는지 판별합니다.
문제
알란은 오늘 학교에서 처음으로 암호학 수업을 들었다. 배운 내용을 활용해 직접 암호를 만들기로 했다. 그는 영문자 A부터 Z까지를 각각 부터 까지의 십진수 숫자 하나에 대응시킨다. 그다음 단어의 각 글자를 대응하는 숫자로 바꿔서 단어를 십진수 문자열로 암호화한다.
알란은 영문자가 개인데 십진수 숫자는 개뿐이라는 점을 놓쳤다. 그래서 충돌이 생길 수 있다. 즉 서로 다른 두 단어가 같은 암호문으로 바뀔 수 있다.
개의 단어 목록과 알란이 쓰는 대응표가 주어진다. 목록의 단어들 사이에 충돌이 있는지 판단하라.
입력
입력의 첫 줄에 테스트 케이스 수 가 주어진다. 이어서 개의 테스트 케이스가 나온다.
각 테스트 케이스의 첫 줄에는 이상 이하의 정수인 십진수 숫자 26개가 순서로 주어진다. 글자 는 숫자 에 대응한다.
각 테스트 케이스의 두 번째 줄에는 단어의 개수 이 주어진다.
이어지는 개의 줄에는 각각 단어 가 하나씩 주어진다.
출력
각 테스트 케이스에 대해 Case #x: y 형식으로 한 줄을 출력한다. 는 1부터 시작하는 테스트 케이스 번호다. 목록에 같은 암호문으로 바뀌는 서로 다른 단어 쌍이 하나라도 있으면 YES를, 없으면 NO를 출력한다.
제한
- .
- 모든 글자 에 대해 .
- 모든 에 대해 (의 길이) .
- 의 각 문자는
A부터Z까지의 대문자 영문자다. - 인 모든 에 대해 .
힌트
예제 1에서 A의 대응 숫자는 , B는 , C는 , D는 , E는 이다. 이 대응에서 ABC는 , BC는 , BCD는 , CDE는 으로 암호화된다. 이 암호문들은 모두 서로 다르므로 충돌이 없다.
예제 2에서 C의 대응 숫자는 , D는 , E는 , F는 , G는 이다. 이 대응에서 CDE는 , DEF는 , EFG는 으로 암호화된다. DEF와 EFG의 암호문이 같으므로 충돌이 있다.