#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <map>
using namespace std;
int main()
{
char message[1001];
int lens[1001];
struct {
char chrs[128][5];
int lens[128];
} t2m;
memset(t2m.chrs, 0, sizeof(t2m.chrs));
t2m.chrs['A'][0] = 'a';
strcpy(t2m.chrs['A'], ".-");
t2m.lens['A'] = strlen(t2m.chrs['A']);
strcpy(t2m.chrs['B'], "-...");
t2m.lens['B'] = strlen(t2m.chrs['B']);
strcpy(t2m.chrs['C'], "-.-.");
t2m.lens['C'] = strlen(t2m.chrs['C']);
strcpy(t2m.chrs['D'], "-..");
t2m.lens['D'] = strlen(t2m.chrs['D']);
strcpy(t2m.chrs['E'], ".");
t2m.lens['E'] = strlen(t2m.chrs['E']);
strcpy(t2m.chrs['F'], "..-.");
t2m.lens['F'] = strlen(t2m.chrs['F']);
strcpy(t2m.chrs['G'], "--.");
t2m.lens['G'] = strlen(t2m.chrs['G']);
strcpy(t2m.chrs['H'], "....");
t2m.lens['H'] = strlen(t2m.chrs['H']);
strcpy(t2m.chrs['I'], "..");
t2m.lens['I'] = strlen(t2m.chrs['I']);
strcpy(t2m.chrs['J'], ".---");
t2m.lens['J'] = strlen(t2m.chrs['J']);
strcpy(t2m.chrs['K'], "-.-");
t2m.lens['K'] = strlen(t2m.chrs['K']);
strcpy(t2m.chrs['L'], ".-..");
t2m.lens['L'] = strlen(t2m.chrs['L']);
strcpy(t2m.chrs['M'], "--");
t2m.lens['M'] = strlen(t2m.chrs['M']);
strcpy(t2m.chrs['N'], "-.");
t2m.lens['N'] = strlen(t2m.chrs['N']);
strcpy(t2m.chrs['O'], "---");
t2m.lens['O'] = strlen(t2m.chrs['O']);
strcpy(t2m.chrs['P'], ".--.");
t2m.lens['P'] = strlen(t2m.chrs['P']);
strcpy(t2m.chrs['Q'], "--.-");
t2m.lens['Q'] = strlen(t2m.chrs['Q']);
strcpy(t2m.chrs['R'], ".-.");
t2m.lens['R'] = strlen(t2m.chrs['R']);
strcpy(t2m.chrs['S'], "...");
t2m.lens['S'] = strlen(t2m.chrs['S']);
strcpy(t2m.chrs['T'], "-");
t2m.lens['T'] = strlen(t2m.chrs['T']);
strcpy(t2m.chrs['U'], "..-");
t2m.lens['U'] = strlen(t2m.chrs['U']);
strcpy(t2m.chrs['V'], "...-");
t2m.lens['V'] = strlen(t2m.chrs['V']);
strcpy(t2m.chrs['W'], ".--");
t2m.lens['W'] = strlen(t2m.chrs['W']);
strcpy(t2m.chrs['X'], "-..-");
t2m.lens['X'] = strlen(t2m.chrs['X']);
strcpy(t2m.chrs['Y'], "-.--");
t2m.lens['Y'] = strlen(t2m.chrs['Y']);
strcpy(t2m.chrs['Z'], "--..");
t2m.lens['Z'] = strlen(t2m.chrs['Z']);
strcpy(t2m.chrs['_'], "..--");
t2m.lens['_'] = strlen(t2m.chrs['_']);
strcpy(t2m.chrs['.'], "---.");
t2m.lens['.'] = strlen(t2m.chrs['.']);
strcpy(t2m.chrs[','], ".-.-");
t2m.lens[','] = strlen(t2m.chrs['.']);
strcpy(t2m.chrs['?'], "----");
t2m.lens['?'] = strlen(t2m.chrs['.']);
char m2t [47][47][47][47];
m2t['.']['-'][0][0] = 'A';
m2t['-']['.']['.']['.'] = 'B';
m2t['-']['.']['-']['.'] = 'C';
m2t['-']['.']['.'][0] = 'D';
m2t['.'][0][0][0] = 'E';
m2t['.']['.']['-']['.'] = 'F';
m2t['-']['-']['.'][0] = 'G';
m2t['.']['.']['.']['.'] = 'H';
m2t['.']['.'][0][0] = 'I';
m2t['.']['-']['-']['-'] = 'J';
m2t['-']['.']['-'][0] = 'K';
m2t['.']['-']['.']['.'] = 'L';
m2t['-']['-'][0][0] = 'M';
m2t['-']['.'][0][0] = 'N';
m2t['-']['-']['-'][0] = 'O';
m2t['.']['-']['-']['.'] = 'P';
m2t['-']['-']['.']['-'] = 'Q';
m2t['.']['-']['.'][0] = 'R';
m2t['.']['.']['.'][0] = 'S';
m2t['-'][0][0][0] = 'T';
m2t['.']['.']['-'][0] = 'U';
m2t['.']['.']['.']['-'] = 'V';
m2t['.']['-']['-'][0] = 'W';
m2t['-']['.']['.']['-'] = 'X';
m2t['-']['.']['-']['-'] = 'Y';
m2t['-']['-']['.']['.'] = 'Z';
m2t['.']['.']['-']['-'] = '_';
m2t['-']['-']['-']['.'] = '.';
m2t['.']['-']['.']['-'] = ',';
m2t['-']['-']['-']['-'] = '?';
while (fgets(message, sizeof(message), stdin)) {
string morse;
int len = strlen(message) - 1;
for (int i = 0; i < len; i++) {
morse.append(t2m.chrs[message[i]]);
lens[i] = t2m.lens[message[i]];
}
int *s, *e;
s = lens;
e = lens + len - 1;
while (s < e) {
int help = *s;
*s = *e;
*e = help;
s++;
e--;
}
for (int i = 0, j = 0; j < len; i++, j++) {
switch (lens[j]) {
case 1:
putchar(m2t[morse[i]][0][0][0]);
break;
case 2:
putchar(m2t[morse[i]][morse[i + 1]][0][0]);
i++;
break;
case 3:
putchar(m2t[morse[i]][morse[i + 1]][morse[i + 2]][0]);
i += 2;
break;
case 4:
putchar(m2t[morse[i]][morse[i + 1]][morse[i + 2]][morse[i + 3]]);
i += 3;
break;
}
}
putchar('\n');
}
return 0;
}