#include <cstdio>
#include <queue>
#include <stack>
#include <cstdlib>
#include <algorithm>
#include <iostream>
#include <cstring>
using namespace std;
string radek;
int CISLO;
/**
boool Je()
{
if(radek == "." || radek == "-")
{
CISLO = 1;
return true;
}
else if(radek == ".-" || radek == ".." || radek == "--" || radek == "-.")
{
CISLO = 2;
return true;
}
if(radek == "--." || radek == "--." || radek == "-.-" || radek == "---" || radek == ".-." || radek == "..." || radek == "..-" || radek == ".--")
{
CISLO = 3;
return true;
}
if(radek == "-..." || radek == "-.-." || radek == "..-." || radek == "...." || radek == ".---" || radek == ".-.." || radek == ".--." || radek == "...-" || radek == "-..-" || radek == "-.--" || radek == "--..")
{
CISLO = 4;
return true;
}
if(radek == "..--" || radek == ".-.-" || radek == "---." || radek == "----")
{
CISLO = 4;
return true;
}
}
**/
int Cislo(char znak)
{
//printf(" ... Cislo(%c)\n", znak);
if(znak == 'A')
{
radek = ".-";
return radek.length();
}
if(znak == 'B')
{
radek = "-...";
return radek.length();
}
if(znak == 'C')
{
radek = "-.-.";
return radek.length();
}
if(znak == 'D')
{
radek = "-..";
return radek.length();
}
if(znak == 'E')
{
radek = ".";
return radek.length();
}
if(znak == 'F')
{
radek = "..-.";
return radek.length();
}
if(znak == 'G')
{
radek = "--.";
return radek.length();
}
if(znak == 'H')
{
radek = "....";
return radek.length();
}
if(znak == 'I')
{
radek = "..";
return radek.length();
}
if(znak == 'J')
{
radek = ".---";
return radek.length();
}
if(znak == 'K')
{
radek = "-.-";
return radek.length();
}
if(znak == 'L')
{
radek = ".-..";
return radek.length();
}
if(znak == 'M')
{
radek = "--";
return radek.length();
}
if(znak == 'N')
{
radek = "-.";
return radek.length();
}
if(znak == 'O')
{
radek = "---";
return radek.length();
}
if(znak == 'P')
{
radek = ".--.";
return radek.length();
}
if(znak == 'Q')
{
radek = "--.-";
return radek.length();
}
if(znak == 'R')
{
radek = ".-.";
return radek.length();
}
if(znak == 'S')
{
radek = "...";
return radek.length();
}
if(znak == 'T')
{
radek = "-";
return radek.length();
}
if(znak == 'U')
{
radek = "..-";
return radek.length();
}
if(znak == 'V')
{
radek = "...-";
return radek.length();
}
if(znak == 'W')
{
radek = ".--";
return radek.length();
}
if(znak == 'X')
{
radek = "-..-";
return radek.length();
}
if(znak == 'Y')
{
radek = "-.--";
return radek.length();
}
if(znak == 'Z')
{
radek = "--..";
return radek.length();
}
if(znak == '_')
{
radek = "..--";
return radek.length();
}
if(znak == ',')
{
radek = ".-.-";
return radek.length();
}
if(znak == '.')
{
radek = "---.";
return radek.length();
}
if(znak == '?')
{
radek = "----";
return radek.length();
}
}
char Znak()
{
if(radek == ".-")
{
return 'A';
}
if(radek == "-...")
{
return 'B';
}
if(radek == "-.-.")
{
return 'C';
}
if(radek == "-..")
{
return 'D';
}
if(radek == ".")
{
return 'E';
}
if(radek == "..-.")
{
return 'F';
}
if(radek == "--.")
{
return 'G';
}
if(radek == "....")
{
return 'H';
}
if(radek == "..")
{
return 'I';
}
if(radek == ".---")
{
return 'J';
}
if(radek == "-.-")
{
return 'K';
}
if(radek == ".-..")
{
return 'L';
}
if(radek == "--")
{
return 'M';
}
if(radek == "-.")
{
return 'N';
}
if(radek == "---")
{
return 'O';
}
if(radek == ".--.")
{
return 'P';
}
if(radek == "--.-")
{
return 'Q';
}
if(radek == ".-.")
{
return 'R';
}
if(radek == "...")
{
return 'S';
}
if(radek == "-")
{
return 'T';
}
if(radek == "..-")
{
return 'U';
}
if(radek == "...-")
{
return 'V';
}
if(radek == ".--")
{
return 'W';
}
if(radek == "-..-")
{
return 'X';
}
if(radek == "-.--")
{
return 'Y';
}
if(radek == "--..")
{
return 'Z';
}
if(radek == "..--")
{
return '_';
}
if(radek == ".-.-")
{
return ',';
}
if(radek == "---.")
{
return '.';
}
if(radek == "----")
{
return '?';
}
}
int main()
{
char znak;
int cislo;
queue<char> znaky;
stack<int> cisla;
while((znak = getchar()) != EOF) // EOF
{
if(znak == '\n')
{
// VYPIS
radek = "";
while(!znaky.empty())
{
radek = "";
//printf("cislo = %d, radek = ", cislo);
for(int i=0; i<cisla.top(); i++)
{
radek = radek+znaky.front();
//putchar(znaky.front()); // vypis
znaky.pop();
}
//printf(" (length = %d) \n", radek.length());
putchar(Znak());
cisla.pop();
}
printf("\n");
}
else // nacitani
{
cislo = Cislo(znak);
for(int i=0; i<radek.length(); i++)
{
znaky.push(radek[i]);
}
cisla.push(cislo);
}
}
/**
//printf("\n");
while(!znaky.empty())
{
putchar(znaky.front());
znaky.pop();
}
printf("\n");
while(!cisla.empty())
{
printf("%d", cisla.top());
cisla.pop();
}
return 0;
**/
return 0;
}