#include <iostream>
#include <string>
#include <cstring>
#include <map>
int main() {
const char *code[256] = { };
code['A'] = ".-";
code['B'] = "-...";
code['C'] = "-.-.";
code['D'] = "-..";
code['E'] = ".";
code['F'] = "..-.";
code['G'] = "--.";
code['H'] = "....";
code['I'] = "..";
code['J'] = ".---";
code['K'] = "-.-";
code['L'] = ".-..";
code['M'] = "--";
code['N'] = "-.";
code['O'] = "---";
code['P'] = ".--.";
code['Q'] = "--.-";
code['R'] = ".-.";
code['S'] = "...";
code['T'] = "-";
code['U'] = "..-";
code['V'] = "...-";
code['W'] = ".--";
code['X'] = "-..-";
code['Y'] = "-.--";
code['Z'] = "--..";
code['_'] = "..--";
code[','] = ".-.-";
code['.'] = "---.";
code['?'] = "----";
unsigned int codelens[256] = { };
std::map<std::string, char> revcode;
for (unsigned int i = 0; i < 256; i++)
if (code[i])
{
codelens[i] = strlen(code[i]);
revcode[code[i]] = (char)i;
}
char morse[5000], result[1250];
unsigned int lens[1250];
while (true)
{
std::string line;
getline(std::cin, line);
if (std::cin.fail())
break;
unsigned int mp = 0;
for (unsigned int p = 0; p < line.size(); p++)
{
char c = line[p];
lens[p] = codelens[c];
for (unsigned int pp = 0; pp < lens[p]; pp++)
morse[mp++] = code[c][pp];
}
mp = 0;
unsigned int rp = 0;
for (int p = line.size() - 1; p >= 0; p--)
{
std::string enc;
for (unsigned int pp = 0; pp < lens[p]; pp++)
enc.push_back(morse[mp++]);
if (revcode.count(enc) == 0)
std::cerr << "lol:" << enc << std::endl;
result[rp++] = revcode[enc];
}
result[rp++] = '\0';
std::cout << result << std::endl;
}
return 0;
}