#include <cstdio>
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
int super_delka=0;
char pole[30][5];
string funkce(char znak){
switch(znak)
{
case 'A': return ".-";
case 'B': return "-...";
case 'C': return "-.-.";
case 'D': return "-..";
case 'E': return ".";
case 'F': return "..-.";
case 'G': return "--.";
case 'H': return "....";
case 'I': return "..";
case 'J': return ".---";
case 'K': return "-.-";
case 'L': return ".-..";
case 'M': return "--";
case 'N': return "-.";
case 'O': return "---";
case 'P': return ".--.";
case 'Q': return "--.-";
case 'R': return ".-.";
case 'S': return "...";
case 'T': return "-";
case 'U': return "..-";
case 'V': return "...-";
case 'W': return ".--";
case 'X': return "-..-";
case 'Y': return "-.--";
case 'Z': return "--..";
case '_': return "..--";
case ',': return ".-.-";
case '.': return "---.";
case '?': return "----";
}
return "";
}
void funkce2(string znak){
if(!znak.compare(".-")) cout << "A";
if(!znak.compare("-...")) cout << "B";
if(!znak.compare("-.-.")) cout << "C";
if(!znak.compare("-..")) cout << "D";
if(!znak.compare(".")) cout << "E";
if(!znak.compare("..-.")) cout << "F";
if(!znak.compare("--.")) cout << "G";
if(!znak.compare("....")) cout << "H";
if(!znak.compare("..")) cout << "I";
if(!znak.compare(".---")) cout << "J";
if(!znak.compare("-.-")) cout << "K";
if(!znak.compare(".-..")) cout << "L";
if(!znak.compare("--")) cout << "M";
if(!znak.compare("-.")) cout << "N";
if(!znak.compare("---")) cout << "O";
if(!znak.compare(".--.")) cout << "P";
if(!znak.compare("--.-")) cout << "Q";
if(!znak.compare(".-.")) cout << "R";
if(!znak.compare("...")) cout << "S";
if(!znak.compare("-")) cout << "T";
if(!znak.compare("..-")) cout << "U";
if(!znak.compare("...-")) cout << "V";
if(!znak.compare(".--")) cout << "W";
if(!znak.compare("-..-")) cout << "X";
if(!znak.compare("-.--")) cout << "Y";
if(!znak.compare("--..")) cout << "Z";
if(!znak.compare("..--")) cout << "_";
if(!znak.compare(".-.-")) cout << ",";
if(!znak.compare("---.")) cout << ".";
if(!znak.compare("----")) cout << "?";
}
int main(){
vector <int> krasno;
string test;
while(cin>>test){
krasno.clear();
//string test = "FENDSVTSLHW.EDATS,EULAY";
string test2 = "";
string helper ="";
string delka ="";
for(unsigned int i =0 ; i < test.size(); i++)
{
helper = funkce(test[i]);
krasno.push_back( (int)helper.size());
test2.append(helper);
}
// cout << test2;
/*
for( unsigned int i=0;i<krasno.size();i++)
cout << krasno[i];
*/
int pom = 0;
int pom2 = 0;
for( unsigned int i=krasno.size()-1;i!=-1;i--)
{
pom = pom2;
pom2 += krasno[i];
funkce2(test2.substr(pom,krasno[i]));
}
cout << endl;
}
return 0;
}