신성 문자

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

문제

고고학자는 초기 문명을 이해하기 위해 고대 언어로 쓰인 글을 연구하기도 한다. 약 $3000$년 전, 이집트에서는 동물, 사물, 신체의 모습을 본뜬 고대 문자인 '신성 문자'를 사용했다.

이 문제에서는 다음 여섯 개의 신성 문자를 인식하는 프로그램을 작성한다. 각 신성 문자는 검은 픽셀이 이어져 만들어진 하나의 도형이며, 여섯 문자는 서로 다른 개수의 '구멍'(도형으로 완전히 둘러싸인 흰색 영역)을 가진다는 점으로 구별된다. 즉, 구멍의 개수만으로 어떤 문자인지 알 수 있다.

신성 문자코드구멍 개수
AnkhA1
WedjatJ3
DjedD5
ScarabS4
WasW2
AkhetK0

주어진 그림에 들어 있는 모든 신성 문자를 알아내어라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 하나 이상의 신성 문자를 담은 하나의 그림이다. 그림은 $0$과 $1$로 이루어지며, $1$은 검은 픽셀, $0$은 흰 픽셀을 나타낸다.

그림의 각 줄은 $16$진수로 인코딩되어 있다. 예를 들어 여덟 개의 픽셀 $10011100$은 9c로 인코딩된다. $16$진수 인코딩에는 문자 09af를 사용한다.

각 테스트 케이스의 첫 줄에는 두 정수 $H$와 $W$가 주어진다. $H$ ($0 < H \le 200$)는 그림의 줄 수, $W$ ($0 < W \le 50$)는 각 줄에 있는 $16$진수 문자의 개수이며, 따라서 그림의 가로 픽셀 수는 $4W$이다. 이어지는 $H$개의 줄에 그림이 주어진다.

입력으로 주어지는 그림은 다음 규칙을 만족한다.

  1. 그림에는 위에서 설명한 여섯 개의 신성 문자만 나타난다.
  2. 모든 그림에는 올바른 신성 문자가 적어도 하나 있다.
  3. 모든 검은 픽셀은 어떤 올바른 신성 문자의 일부이다.
  4. 하나의 신성 문자는 검은 픽셀이 이어진 형태이다. 즉, 모든 검은 픽셀은 위, 아래, 왼쪽, 오른쪽 중 적어도 한 방향에서 다른 검은 픽셀과 맞닿아 있다.
  5. 서로 다른 신성 문자는 맞닿지 않으며, 한 문자가 다른 문자를 안에 포함하지도 않는다.
  6. 두 검은 픽셀이 대각선으로 맞닿아 있으면, 그 두 픽셀 모두와 상하좌우로 맞닿은 검은 픽셀이 반드시 존재한다.
  7. 신성 문자는 다소 비뚤어져 있을 수 있으나, 그 구멍의 개수는 항상 위 표와 같다.

마지막 테스트 케이스 다음 줄에는 $0$ 두 개가 주어진다.

출력

각 테스트 케이스마다 Case x: 코드들 형식으로 한 줄에 출력한다. 여기서 $x$는 $1$부터 시작하는 테스트 케이스 번호이고, 코드들은 그림에 있는 신성 문자들의 코드를 알파벳 순서(사전순)로 정렬해 이어 붙인 문자열이다.