스테가노그래피

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

문제

암호학(cryptography)의 목표는 메시지를 암호화하여, 설령 메시지가 가로채이더라도 의도한 수신자만이 그것을 읽을 수 있게 하는 것이다. 반면 문자 그대로 "숨겨 쓰기"를 뜻하는 스테가노그래피(steganography)의 목표는 메시지가 전송되었다는 사실 자체를 감추는 것이다. 이 기법은 적어도 기원전 440년까지 거슬러 올라가며, 역사적으로는 보이지 않는 잉크나 전령의 밀어 깎은 머리에 메시지를 문신으로 새기는 방법 등이 사용되었다. 현대적인 방법으로는 디지털 이미지 픽셀의 RGB 색상 값의 최하위 비트에 메시지를 숨기는 것이 있다.

이 문제에서는 평범해 보이는 텍스트 속에 숨겨진 메시지를 복원해야 한다. 텍스트의 공백이 비트를 인코딩한다. 연속된 공백의 극대 구간 각각에 대해, 그 길이가 홀수이면 0을, 짝수이면 1을 나타낸다. 줄바꿈 문자는 공백이 아니므로 공백 구간은 절대 줄 경계를 넘지 않는다. 이 구간들을 왼쪽에서 오른쪽으로, 위에서 아래로 읽으면 하나의 비트 문자열이 만들어진다.

비트들은 다섯 개씩 묶는다. 각 묶음은 0–31 범위의 이진수이며, 아래 표에 따라 하나의 문자로 변환된다. 마지막 묶음의 비트가 다섯 개보다 적으면 오른쪽을 0으로 채운다.

문자
" " (공백)0
"A""Z"1–26
"'" (작은따옴표)27
"," (쉼표)28
"-" (하이픈)29
"." (마침표)30
"?" (물음표)31

예를 들어 다섯 비트 $11111_2 = 31_{10}$ 은 ? 로 해독된다. 마지막 묶음이 짧으면 오른쪽을 채운다. 두 비트 01 은 $01000_2 = 8_{10}$ 이 되어 H 가 된다.

입력

입력은 하나 이상의 텍스트로 구성된다. 각 텍스트는 하나 이상의 줄로 이루어지며, 각 줄의 길이는 최대 80자이다. 각 텍스트는 오직 * 하나만 있는 줄로 끝난다. 오직 # 하나만 있는 줄은 입력의 끝을 나타낸다. 공백 외에도 텍스트 줄에는 임의의 ASCII 문자, 숫자, 문장 부호가 올 수 있으나, 위에서 설명한 구분자로만 쓰이는 *# 는 포함되지 않는다.

출력

각 텍스트마다 숨겨진 메시지를 한 줄에 하나씩 출력한다. 숨겨진 메시지의 길이는 1자 이상 64자 이하이다.