#include <iostream>
#include <string>
#include <cstdlib>
#include <cstdio>
#include <map>
#include <cstring>
#include <vector>
using namespace std;
map<char, string> znaky;
void code(string &str, string &ret, vector<unsigned int> &cisla)
{
//vector<unsigned int> cisla;
for (unsigned int i = 0; i<str.length(); i++)
{
ret.append(znaky[str.at(i)]);
cisla.push_back(znaky[str.at(i)].length());
}
//cout<<ret<<" " ;
for(vector<unsigned int>::iterator i = cisla.begin(); i != cisla.end(); i++) {
//cout<<*i;
}
//cout<<endl;
}
void decode(string &str, string &ret, vector<unsigned int> &cisla) {
unsigned int offset = 0;
string kod;
//for (vector<unsigned int>::iterator i = cisla.begin(); i != cisla.end(); i++)
for (vector<unsigned int>::iterator i = cisla.end()-1; ; i--)
{
kod = str.substr(offset, *i);
////cout<<kod<<endl;
for(map<char, string>::iterator k = znaky.begin(); k != znaky.end(); k++)
{
////cout << k->second << " == " << kod <<endl;
if ((k->second).length()==kod.length()&&(k->second).compare(kod)==0)
{
//cout << k->second << " == " << kod <<endl;
//cout<<" => Znak: "<<(k->first)<<endl;
char tmp[2] = {(k->first), '\0'};
ret.append(tmp);
break;
}
}
//kod.empty();
offset+=*i;
if (i == cisla.begin())
break;
}
//cout<<ret<<endl;
}
int main ()
{
unsigned long n, x, y, pocet;
n = x = y = pocet = 0;
string input;/*
strcpy(znaky['A'], ".-");
strcpy(znaky['B'], "-...");
strcpy(znaky['C'], "-.-.");
strcpy(znaky['D'], "-..");
strcpy(znaky['E'], ".");
strcpy(znaky['F'], "..-.");
strcpy(znaky['G'], "--.");
strcpy(znaky['H'], "....");
strcpy(znaky['I'], "..");
strcpy(znaky['J'], ".---");
strcpy(znaky['K'], "-.-");
strcpy(znaky['L'], ".-..");
strcpy(znaky['M'], "--");
strcpy(znaky['N'], "-.");
strcpy(znaky['O'], "---");
strcpy(znaky['P'], ".--.");
strcpy(znaky['Q'], "--.-");
strcpy(znaky['R'], ".-.");
strcpy(znaky['S'], "...");
strcpy(znaky['T'], "...");
strcpy(znaky['U'], "..-");
strcpy(znaky['V'], "...-");
strcpy(znaky['W'], ".--");
strcpy(znaky['X'], "-..-");
strcpy(znaky['Y'], "-.--");
strcpy(znaky['Z'], "--..");
strcpy(znaky['_'], "..--");
strcpy(znaky['.'], "---.");
strcpy(znaky[','], ".-.-");
strcpy(znaky['?'], "----");
*/
znaky['A']= string(".-");
znaky['B']= string("-...");
znaky['C']= string("-.-.");
znaky['D']= string("-..");
znaky['E']= string(".");
znaky['F']= string("..-.");
znaky['G']= string("--.");
znaky['H']= string("....");
znaky['I']= string("..");
znaky['J']= string(".---");
znaky['K']= string("-.-");
znaky['L']= string(".-..");
znaky['M']= string("--");
znaky['N']= string("-.");
znaky['O']= string("---");
znaky['P']= string(".--.");
znaky['Q']= string("--.-");
znaky['R']= string(".-.");
znaky['S']= string("...");
znaky['T']= string("-");
znaky['U']= string("..-");
znaky['V']= string("...-");
znaky['W']= string(".--");
znaky['X']= string("-..-");
znaky['Y']= string("-.--");
znaky['Z']= string("--..");
znaky['_']= string("..--");
znaky['.']= string("---.");
znaky[',']= string(".-.-");
znaky['?']= string("----");
string ret;
string ret2;
vector<unsigned int> cisla;
while (cin)
{
cin >> input;
code(input, ret, cisla);
decode(ret, ret2, cisla);
ret.clear();
cout<<ret2<<endl;
ret2.clear();
cisla.clear();
}
return 0;
}