스팸
면접 대비시간 제한1초메모리 제한128 MB
주어진 메시지와 같은 스팸 인코딩을 갖는 서로 다른 평문 메시지의 수를 센다.
문제
내용 기반 스팸 필터를 피하기 위해 스패머들은 메시지의 글자를 바꿔 자동 필터가 알아보지 못하게 만든다. 대문자로만 이루어진 평문 문자열 s에 대해, 각 글자를 아래의 "스팸 알파벳" 코드로 바꿔 만든 문자열을 Φ(s)라고 하자.
A -> 4
B -> |3
C -> (
D -> |)
E -> 3
F -> |=
G -> 6
H -> #
I -> |
J -> _|
K -> |<
L -> |_
M -> |\/|
N -> |\|
O -> 0
P -> |0
Q -> (,)
R -> |?
S -> 5
T -> 7
U -> |_|
V -> \/
W -> \/\/
X -> ><
Y -> -/
Z -> 2
이 규칙에서 평문 메시지 s는 정확히 하나의 인코딩 결과 Φ(s)에 대응된다. 하지만 그 반대는 성립하지 않는다. 하나의 인코딩 결과는 서로 다른 여러 평문 메시지에서 나올 수 있다. 예를 들어 U의 코드 |_|는 L 다음에 I가 오는 경우(|_ + |)로도 똑같이 만들어진다.
평문 메시지 s가 주어질 때, 스팸 인코딩 결과가 Φ(s)와 같은 서로 다른 평문 메시지가 몇 개인지 구하라.
입력
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 1자 이상 100자 이하의 대문자로만 이루어진 평문 문자열 s가 한 줄에 주어진다. 입력의 끝은 end라는 단어만 있는 한 줄로 나타내며, 이 줄은 테스트 케이스가 아니다.
출력
각 테스트 케이스마다, 스팸 인코딩 결과가 Φ(s)와 같은 서로 다른 평문 메시지의 개수(s 자신 포함)를 한 줄에 하나씩 출력한다. 이 개수는 1,000,000,000 이하임이 보장된다.
힌트
BU의 인코딩은 |3|_|이다. 이 인코딩을 갖는 평문 메시지 6개는 BU, IEU, BIJ, IEIJ, BLI, IELI이다.
UJ의 인코딩은 |_|_|이다. 이 인코딩을 갖는 평문 메시지 5개는 UJ, LU, IJJ, LLI, LIJ이다.