#include<iostream>
#include<map>
using namespace std;
string s;
map<char,string>B;
map<string,char>A;
main()
{A["101"]=' ';
A["000000"]='\'';
A["000011"]=',';
A["10010001"]='-';
A["010001"]='.';
A["000001"]='?';
A["100101"]='A';
A["10011010"]='B';
A["0101"]='C';
A["0001"]='D';
A["110"]='E';
A["01001"]='F';
A["10011011"]='G';
A["010000"]='H';
A["0111"]='I';
A["10011000"]='J';
A["0110"]='K';
A["00100"]='L';
A["10011001"]='M';
A["10011110"]='N';
A["00101"]='O';
A["111"]='P';
A["10011111"]='Q';
A["1000"]='R';
A["00110"]='S';
A["00111"]='T';
A["10011100"]='U';
A["10011101"]='V';
A["000010"]='W';
A["10010010"]='X';
A["10010011"]='Y';
A["10010000"]='Z';
B['A']="00000";
B['B']="00001";
B['C']="00010";
B['D']="00011";
B['E']="00100";
B['F']="00101";
B['G']="00110";
B['H']="00111";
B['I']="01000";
B['J']="01001";
B['K']="01010";
B['L']="01011";
B['M']="01100";
B['N']="01101";
B['O']="01110";
B['P']="01111";
B['Q']="10000";
B['R']="10001";
B['S']="10010";
B['T']="10011";
B['U']="10100";
B['V']="10101";
B['W']="10110";
B['X']="10111";
B['Y']="11000";
B['Z']="11001";
B[' ']="11010";
B['.']="11011";
B[',']="11100";
B['-']="11101";
B['\'']="11110";
B['?']="11111";
	while(getline(cin,s))
	{
		string t="";
		for(int i=0;i<s.size();i++)t+=B[s[i]];
		for(int i=0;i<t.size();)
		{
		    int j=1;
		    for(;i+j<=t.size()&&A[t.substr(i,j)]==0;j++);
		    cout<<A[t.substr(i,j)];
		}
		cout<<endl;
	}
}

