#include <stdio.h>
#include <map>
#include <string>
#define mp make_pair
using namespace std;
map<char, string> mor;
char line[1111];
char nums[1111];
char morse[4444];
int L;
void solve() {
int N = 0;
for(int i = 0; i < L; i++) {
nums[i] = mor[line[i]].size();
for(int j = 0; j < mor[line[i]].size(); j++) {
morse[N++] = mor[line[i]][j];
}
}
morse[N] = '\0';
int let = 0;
for(int j = 0; j < N; let++) {
string curr = "";
for(int i = 0; i < nums[L-let-1]; i++) {
curr += morse[j+i];
}
for(int i = 0; i < 26; i++) {
if(mor['A'+i] == curr) printf("%c", 'A'+i);
}
if(mor['_'] == curr) printf("%c", '_');
if(mor['.'] == curr) printf("%c", '.');
if(mor[','] == curr) printf("%c", ',');
if(mor['?'] == curr) printf("%c", '?');
j += nums[L-let-1];
}
printf("\n");
}
int main() {
mor.insert(mp('A', ".-"));
mor.insert(mp('B', "-..."));
mor.insert(mp('C', "-.-."));
mor.insert(mp('D', "-.."));
mor.insert(mp('E', "."));
mor.insert(mp('F', "..-."));
mor.insert(mp('G', "--."));
mor.insert(mp('H', "...."));
mor.insert(mp('I', ".."));
mor.insert(mp('J', ".---"));
mor.insert(mp('K', "-.-"));
mor.insert(mp('L', ".-.."));
mor.insert(mp('M', "--"));
mor.insert(mp('N', "-."));
mor.insert(mp('O', "---"));
mor.insert(mp('P', ".--."));
mor.insert(mp('Q', "--.-"));
mor.insert(mp('R', ".-."));
mor.insert(mp('S', "..."));
mor.insert(mp('T', "-"));
mor.insert(mp('U', "..-"));
mor.insert(mp('V', "...-"));
mor.insert(mp('W', ".--"));
mor.insert(mp('X', "-..-"));
mor.insert(mp('Y', "-.--"));
mor.insert(mp('Z', "--.."));
mor.insert(mp('.', "---."));
mor.insert(mp(',', ".-.-"));
mor.insert(mp('?', "----"));
mor.insert(mp('_', "..--"));
char x;
L=0;
while(scanf("%c", &x) == 1) {
if(x == '\n') {line[L] = '\0'; solve();L=0;}
line[L++] = x;
}
return 0;
}