#include <stdio.h>
#include <iostream>
#include <map>
#include <vector>
#include <string>
using namespace std;
map<string, char> mcToChar;
map<char, string> charToMc;
void initMaps() {
mcToChar.insert(make_pair(".-", 'A'));
mcToChar.insert(make_pair("-...", 'B'));
mcToChar.insert(make_pair("-.-.", 'C'));
mcToChar.insert(make_pair("-..", 'D'));
mcToChar.insert(make_pair(".", 'E'));
mcToChar.insert(make_pair("..-.", 'F'));
mcToChar.insert(make_pair("--.", 'G'));
mcToChar.insert(make_pair("....", 'H'));
mcToChar.insert(make_pair("..", 'I'));
mcToChar.insert(make_pair(".---", 'J'));
mcToChar.insert(make_pair("-.-", 'K'));
mcToChar.insert(make_pair(".-..", 'L'));
mcToChar.insert(make_pair("--", 'M'));
mcToChar.insert(make_pair("-.", 'N'));
mcToChar.insert(make_pair("---", 'O'));
mcToChar.insert(make_pair(".--.", 'P'));
mcToChar.insert(make_pair("--.-", 'Q'));
mcToChar.insert(make_pair(".-.", 'R'));
mcToChar.insert(make_pair("...", 'S'));
mcToChar.insert(make_pair("-", 'T'));
mcToChar.insert(make_pair("..-", 'U'));
mcToChar.insert(make_pair("...-", 'V'));
mcToChar.insert(make_pair(".--", 'W'));
mcToChar.insert(make_pair("-..-", 'X'));
mcToChar.insert(make_pair("-.--", 'Y'));
mcToChar.insert(make_pair("--..", 'Z'));
mcToChar.insert(make_pair("..--", '_'));
mcToChar.insert(make_pair(".-.-", ','));
mcToChar.insert(make_pair("---.", '.'));
mcToChar.insert(make_pair("----", '?'));
charToMc.insert(make_pair('A', ".-"));
charToMc.insert(make_pair('B', "-..."));
charToMc.insert(make_pair('C', "-.-."));
charToMc.insert(make_pair('D', "-.."));
charToMc.insert(make_pair('E', "."));
charToMc.insert(make_pair('F', "..-."));
charToMc.insert(make_pair('G', "--."));
charToMc.insert(make_pair('H', "...."));
charToMc.insert(make_pair('I', ".."));
charToMc.insert(make_pair('J', ".---"));
charToMc.insert(make_pair('K', "-.-"));
charToMc.insert(make_pair('L', ".-.."));
charToMc.insert(make_pair('M', "--"));
charToMc.insert(make_pair('N', "-."));
charToMc.insert(make_pair('O', "---"));
charToMc.insert(make_pair('P', ".--."));
charToMc.insert(make_pair('Q', "--.-"));
charToMc.insert(make_pair('R', ".-."));
charToMc.insert(make_pair('S', "..."));
charToMc.insert(make_pair('T', "-"));
charToMc.insert(make_pair('U', "..-"));
charToMc.insert(make_pair('V', "...-"));
charToMc.insert(make_pair('W', ".--"));
charToMc.insert(make_pair('X', "-..-"));
charToMc.insert(make_pair('Y', "-.--"));
charToMc.insert(make_pair('Z', "--.."));
charToMc.insert(make_pair('_', "..--"));
charToMc.insert(make_pair(',', ".-.-"));
charToMc.insert(make_pair('.', "---."));
charToMc.insert(make_pair('?', "----"));
}
string getMorseCode(char a) {
map<char, string>::iterator it = charToMc.find(a);
return it->second;
}
char getLetter(string m) {
map<string, char>::iterator it = mcToChar.find(m);
return it->second;
}
void revertNumbers(vector<int> & numbers) {
int i = 0, j = numbers.size() - 1;
while (i < j) {
int a = numbers[i];
numbers[i] = numbers[j];
numbers[j] = a;
i++;
j--;
}
}
int main() {
initMaps();
string input;
while (cin >> input) {
string morseCode = "";
vector<int> numbers;
string output = "";
for(unsigned i = 0; i < input.length(); i++){
string buff = getMorseCode(input[i]);
morseCode.append( buff );
numbers.push_back(buff.length());
}
revertNumbers(numbers);
int j = 0;
unsigned i = 0;
while (i < morseCode.length()){
output.push_back(getLetter(morseCode.substr(i, numbers[j])));
i += numbers[j];
j++;
}
cout << output << endl;
}
return 0;
}