숫자로 말하기

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

길이가 1부터 20까지인 모든 소문자 단어에 서로 다른 양의 정수를 하나씩 부여한다. 단어는 먼저 길이순으로, 같은 길이 안에서는 사전순으로 정렬한 뒤, 1번부터 차례대로 번호를 매긴다. 목록의 앞부분은 다음과 같다.

a           1
b           2
...
z          26
aa         27
ab         28
...
snowfall   157,118,051,752
...

이는 26진 전단사(bijective) 표기와 정확히 같다. 단어를 왼쪽에서 오른쪽으로 읽으며 a = 1, b = 2, …, z = 26을 각 자릿값으로 삼으면, 자릿값이 $d_1 d_2 \dots d_k$인 길이 $k$ 단어의 번호는 $\sum_{i=1}^{k} d_i \cdot 26^{,k-i}$ 이다.

단어가 주어지면 그 번호를, 번호가 주어지면 그에 대응하는 단어를 출력하는 양방향 변환 프로그램을 작성하라.

입력

입력은 한 줄에 한 항목씩 나열되며, 각 항목은 1열에서 시작한다. 1열에 별표(*) 하나만 있는 줄이 나오면 입력이 끝난다.

각 항목은 숫자이거나 단어이다.

  • 숫자09의 십진 숫자로만 이루어지며(쉼표 없음), 길이가 1부터 20까지인 어떤 단어에 대응한다.
  • 단어az의 소문자 1개부터 20개까지로 이루어진다.

출력

각 입력 항목마다 한 줄씩 출력한다. 단어는 1열에서 시작하고, 그에 대응하는 번호는 23열에서 시작한다. 그 사이는 공백으로 채운다(즉 단어를 폭 22칸의 왼쪽 정렬 칸에 넣고, 그 뒤에 곧바로 번호를 붙인다). 번호는 오른쪽에서 세 자리마다(천, 백만 등) 쉼표로 구분한다.