

 
#include <iostream>
#include <cstring>
#include <string>
#include <vector>
#include <cstdio>
#include <algorithm>

using namespace std;

struct node
{
	int num;
	string s;
};
node a[10];
void table()
{
	
	int p = 0;
	for(int i = 2; i <= 9; i++)
	{
		if(i == 7 || i == 9)
		{
			string s = "";
			for(int j = 0; j < 4; j++)
				s += char(p + j + 'A');
			a[i].s = s;
			a[i].num = i;
			p += 4;
		}
		else
		{
			string s = "";
			for(int j = 0; j < 3; j++)
				s += char(p + j + 'A');
			a[i].s = s;
			a[i].num = i;
			p += 3;
		}
	}
	a[0].num = 0;
	a[0].s = ' ';
	a[1].num = 1;
	a[1].s = "";
	/*
	for(int i = 0; i < 10; i++)
	{
		if(i == 1)
			continue;
		cout << a[i].num << " :" << a[i].s << endl;
	}
	*/
}

void toStr(string s)
{
	for(int i = 0; i < s.length(); )
	{
		int j = i;
		while(j < s.size() && s[j] != ' ')
			j++;
		cout << a[s[i] - '0'].s[j - i - 1];
		i = j + 1;
	}
	cout << endl;
}

void toNum(string s)
{
	for(int i = 0; i < s.length(); i++ )
	{
		for(int j = 0; j < 10; j++)
		{
			int pos = a[j].s.find(s[i]);
			if(pos != -1)
			{
				for(int k = 0; k <= pos; k++)
				{
					cout << j;
				}
				if(i != s.length() - 1)
					cout << " ";
				break;
			}
		}
		
	}
	cout << endl;

}

void solve(string s)
{
	for(int i = 0; i < s.length(); i++)
	{
		if('0' <= s[i] && s[i] <= '9')
		{
			toStr(s);
			break;
		}
		else if('A' <= s[i] && s[i] <= 'Z')
		{
			toNum(s);
			break;
		}
		if(i == s.length() - 1)
		{
			toNum(s);
		}
	}
}

int main()
{
	table();
	string s;
	char c[1005];
	int ncase;
	ncase = 4;
	while(cin.getline(c, 1002))
	{
		//gets(c);
		s = c;
		solve(s);
	}
	return 0;
}        