#include <map>
#include <cstdio>
#include <string>
#include <algorithm>
#include <cstdlib>
#include <cstring>
using namespace std;
string letter_morse[30] = {
".-", "-...", "-.-.", "-..", ".", "..-.", "--.",
"....", "..", ".---", "-.-", ".-..", "--", "-.",
"---", ".--.", "--.-", ".-.", "...", "-", "..-",
"...-", ".--", "-..-", "-.--", "--..",
"..--", ".-.-", "---.", "----"
};
static inline int get_index(char a){
if (a >= 'A' && a <= 'Z'){
return a - 'A';
}
switch (a){
case '_':
return 26;
case ',':
return 27;
case '.':
return 28;
case '?':
return 29;
}
}
map<string, char> morse_letter;
#include <iostream>
static inline void init(){
for (int i = 0; i < 26; i++){
morse_letter[letter_morse[i]] = (i + 'A');
}
morse_letter[letter_morse[26]] = '_';
morse_letter[letter_morse[27]] = ',';
morse_letter[letter_morse[28]] = '.';
morse_letter[letter_morse[29]] = '?';
/* for (map<string, char>::iterator it = morse_letter.begin();
it != morse_letter.end(); ++it){
cout << it->first << " " << it->second << std::endl;
}
*/
}
#define MAX_LEN 1024
int main(){
init();
// printf("initing\n");
char message_buf[MAX_LEN];
int res;
char result[MAX_LEN];
while (scanf("%s%n%*c", message_buf, &res) != EOF){
// printf("Read: %s\n", message_buf);
// printf("Length: %d\n", res);
string morse_buf;
string len;
memset(result, 0, res + 1);
for (int i = 0; i < res; i++){
// int index = get_index(message_buf[i]);
// printf("Index is: %d\n", index);
string& current = letter_morse[get_index(message_buf[i])];
// printf("morse repre is %s\n", current.c_str());
len += (char) (current.size() + '0');
morse_buf += current;
}
// printf("len before rev: %s\n", len.c_str());
reverse(len.begin(), len.end());
// printf("len after rev: %s\n", len.c_str());
int morse_index = 0;
int result_index = 0;
for (int j = 0; j < res; j++){
int s = len[j] - '0';
// string substring = string(&morse_buf[morse_index], s);//morse_buf.substr(morse_index, morse_index + s);
// printf("substr: %s\n", substring.c_str());
result[result_index] = morse_letter[string(&morse_buf[morse_index], s)];
// printf("s: %d\nmorse_index: %d\n result_index: %d\n result: %s\n", s, morse_index, result_index, result);
morse_index += s;
result_index++;
}
// printf("string len is :%d\n", res);
// printf("before setting null: %s\n", result);
result[res] = 0;
printf("%s\n", result);
}
return 0;
}