#include <bits/stdc++.h>
using namespace std;
vector<string> code =
{"AEIOUYWH", "BPFV", "CSKGJQXZ",
"DT", "L", "MN", "R"};
int main()
{
map<char, int> find;
for (int i = 0; i < 7; i++)
for (int k = 0; k < code[i].size(); k++)
find[code[i][k]] = i;
//char find[] = {-1,'1','2','3',-1,'1','2',-1,-1,'2','2','4','5','5',
// -1,'1','2','6','2','3',-1,'1',-1,'2',-1,'2'};
cout << setw(9) << "" << setw(25) << left << "NAME" << "SOUNDEX CODE" << endl;
string name;
while (cin >> name)
{
cout << setw(9) << "" << setw(25) << left << name;
string output = "";
output += name[0];
int prev = find[name[0]];
int count = 1;
for (int i = 1; i < name.size() and count < 4; i++)
{
if (find[name[i]] != 0 && find[name[i]] != prev)
{
output += to_string(find[name[i]]);
count++;
}
prev = find[name[i]];
}
cout << setw(4) << setfill('0') << output << endl << setfill(' ');
}
cout << setw(19) << "" << "END OF OUTPUT" << endl;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnZlY3RvcjxzdHJpbmc+IGNvZGUgPQp7IkFFSU9VWVdIIiwgIkJQRlYiLCAiQ1NLR0pRWFoiLAogIkRUIiwgIkwiLCAiTU4iLCAiUiJ9OwoKaW50IG1haW4oKQp7CgltYXA8Y2hhciwgaW50PiBmaW5kOwoJZm9yIChpbnQgaSA9IDA7IGkgPCA3OyBpKyspCgkJZm9yIChpbnQgayA9IDA7IGsgPCBjb2RlW2ldLnNpemUoKTsgaysrKQoJCQlmaW5kW2NvZGVbaV1ba11dID0gaTsKICAgIC8vY2hhciBmaW5kW10gPSB7LTEsJzEnLCcyJywnMycsLTEsJzEnLCcyJywtMSwtMSwnMicsJzInLCc0JywnNScsJzUnLAoJLy8JCQkgICAtMSwnMScsJzInLCc2JywnMicsJzMnLC0xLCcxJywtMSwnMicsLTEsJzInfTsKCgljb3V0IDw8IHNldHcoOSkgIDw8ICIiIDw8IHNldHcoMjUpIDw8IGxlZnQgPDwgIk5BTUUiIDw8ICJTT1VOREVYIENPREUiIDw8IGVuZGw7CglzdHJpbmcgbmFtZTsKCQoJd2hpbGUgKGNpbiA+PiBuYW1lKQoJewoJCWNvdXQgPDwgc2V0dyg5KSA8PCAiIiA8PCBzZXR3KDI1KSA8PCBsZWZ0IDw8IG5hbWU7CgkJc3RyaW5nIG91dHB1dCA9ICIiOwoJCW91dHB1dCArPSBuYW1lWzBdOwoJCQoJCWludCBwcmV2ID0gZmluZFtuYW1lWzBdXTsKCQlpbnQgY291bnQgPSAxOwoKCQlmb3IgKGludCBpID0gMTsgaSA8IG5hbWUuc2l6ZSgpIGFuZCBjb3VudCA8IDQ7IGkrKykKCQl7CgkJCWlmIChmaW5kW25hbWVbaV1dICE9IDAgJiYgZmluZFtuYW1lW2ldXSAhPSBwcmV2KQoJCQl7CgkJCQlvdXRwdXQgKz0gdG9fc3RyaW5nKGZpbmRbbmFtZVtpXV0pOwoJCQkJY291bnQrKzsKCQkJfQogICAgICAgICAgICBwcmV2ID0gZmluZFtuYW1lW2ldXTsKCQl9CgkJY291dCA8PCBzZXR3KDQpIDw8IHNldGZpbGwoJzAnKSA8PCBvdXRwdXQgPDwgZW5kbCA8PCBzZXRmaWxsKCcgJyk7Cgl9CgoJY291dCA8PCAgc2V0dygxOSkgPDwgIiIgPDwgIkVORCBPRiBPVVRQVVQiIDw8IGVuZGw7Cn0=