#include <iostream>
#include <string>
#include <queue>
#include <stack>
using namespace std;
int STATE;
void nextState ( char c )
{
switch ( c ) {
case '.': STATE = STATE * 2 + 1; break;
case '-': STATE = STATE * 2 + 2; break;
}
}
char getCharFromState ( void )
{
switch ( STATE ) {
case 1: return 'E'; break;
case 2: return 'T'; break;
case 3: return 'I'; break;
case 4: return 'A'; break;
case 5: return 'N'; break;
case 6: return 'M'; break;
case 7: return 'S'; break;
case 8: return 'U'; break;
case 9: return 'R'; break;
case 10: return 'W'; break;
case 11: return 'D'; break;
case 12: return 'K'; break;
case 13: return 'G'; break;
case 14: return 'O'; break;
case 15: return 'H'; break;
case 16: return 'V'; break;
case 17: return 'F'; break;
case 18: return '_'; break;
case 19: return 'L'; break;
case 20: return ','; break;
case 21: return 'P'; break;
case 22: return 'J'; break;
case 23: return 'B'; break;
case 24: return 'X'; break;
case 25: return 'C'; break;
case 26: return 'Y'; break;
case 27: return 'Z'; break;
case 28: return 'Q'; break;
case 29: return '.'; break;
case 30: return '?'; break;
}
return '#';
}
char morseToAscii ( queue<char> & str, int num )
{
STATE = 0;
for ( int i = 0; i < num; i++ ) {
nextState(str.front()); str.pop();
}
return getCharFromState();
}
void asciiToMorse ( queue<char> & str, stack<int> & nums, char c )
{
switch ( c ) {
case 'A': str.push('.'); str.push('-'); nums.push(2);
break;
case 'B': str.push('-'); str.push('.'); str.push('.'); str.push('.'); nums.push(4);
break;
case 'C': str.push('-'); str.push('.'); str.push('-'); str.push('.'); nums.push(4);
break;
case 'D': str.push('-'); str.push('.'); str.push('.'); nums.push(3);
break;
case 'E': str.push('.'); nums.push(1);
break;
case 'F': str.push('.'); str.push('.'); str.push('-'); str.push('.'); nums.push(4);
break;
case 'G': str.push('-'); str.push('-'); str.push('.'); nums.push(3);
break;
case 'H': str.push('.'); str.push('.'); str.push('.'); str.push('.'); nums.push(4);
break;
case 'I': str.push('.'); str.push('.'); nums.push(2);
break;
case 'J': str.push('.'); str.push('-'); str.push('-'); str.push('-'); nums.push(4);
break;
case 'K': str.push('-'); str.push('.'); str.push('-'); nums.push(3);
break;
case 'L': str.push('.'); str.push('-'); str.push('.'); str.push('.'); nums.push(4);
break;
case 'M': str.push('-'); str.push('-'); nums.push(2);
break;
case 'N': str.push('-'); str.push('.'); nums.push(2);
break;
case 'O': str.push('-'); str.push('-'); str.push('-'); nums.push(3);
break;
case 'P': str.push('.'); str.push('-'); str.push('-'); str.push('.'); nums.push(4);
break;
case 'Q': str.push('-'); str.push('-'); str.push('.'); str.push('-'); nums.push(4);
break;
case 'R': str.push('.'); str.push('-'); str.push('.'); nums.push(3);
break;
case 'S': str.push('.'); str.push('.'); str.push('.'); nums.push(3);
break;
case 'T': str.push('-'); nums.push(1);
break;
case 'U': str.push('.'); str.push('.'); str.push('-'); nums.push(3);
break;
case 'V': str.push('.'); str.push('.'); str.push('.'); str.push('-'); nums.push(4);
break;
case 'W': str.push('.'); str.push('-'); str.push('-'); nums.push(3);
break;
case 'X': str.push('-'); str.push('.'); str.push('.'); str.push('-'); nums.push(4);
break;
case 'Y': str.push('-'); str.push('.'); str.push('-'); str.push('-'); nums.push(4);
break;
case 'Z': str.push('-'); str.push('-'); str.push('.'); str.push('.'); nums.push(4);
break;
case '_': str.push('.'); str.push('.'); str.push('-'); str.push('-'); nums.push(4);
break;
case ',': str.push('.'); str.push('-'); str.push('.'); str.push('-'); nums.push(4);
break;
case '.': str.push('-'); str.push('-'); str.push('-'); str.push('.'); nums.push(4);
break;
case '?': str.push('-'); str.push('-'); str.push('-'); str.push('-'); nums.push(4);
break;
}
}
int main ( void )
{
string line;
while ( getline(cin, line) && line.size() != 0 ) {
queue<char> str; stack<int> nums;
int lenLine = line.size();
for ( int i = 0; i < lenLine; i++ ) {
asciiToMorse( str, nums, line[ i ] );
}
int lenNums = nums.size();
for ( int i = 0; i < lenNums; i++ ) {
cout << morseToAscii ( str, nums.top() );
nums.pop();
}
cout << endl;
}
return 0;
}