#include <iostream>
#include <string>

using namespace std;

#define loop(i,a,b) for(int i=(a);i<int(b);i++)
#define rep(i,b) loop(i,0,b)

string s1[32] = {"00000", "00001", "00010", "00011", "00100", "00101", "00110", "00111",
                 "01000", "01001", "01010", "01011", "01100", "01101", "01110", "01111",
                 "10000", "10001", "10010", "10011", "10100", "10101", "10110", "10111",
                 "11000", "11001", "11010", "11011", "11100", "11101", "11110", "11111"};
char c1[32] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z', ' ', '.',',','-','\'','?'};

char c2[32] = {' ','\'',',','-','.','?','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
string s2[32] = {"101", "000000","000011","10010001","010001","000001","100101","10011010",
                 "0101","0001","110","01001","10011011","010000","0111","10011000",
                 "0110","00100","10011001","10011110","00101","111","10011111","1000",
                 "00110","00111","10011100","10011101","000010","10010010","10010011","10010000"};

string solve(string s){
    string t;
    for(char c:s){
        rep(i,32)if(c == c1[i]) t += s1[i];
    }
    string ans;
    string temp;
    for(char c:t){
        temp += c;
        if(temp.size()<3) continue;
        rep(i,32){
            if(temp == s2[i]){
                ans += c2[i];
                temp = "";
            }
        }
    }
    return ans;
}

int main(){
    string s;
    while(getline(cin,s)){
        cout << solve(s) << endl;
    }
}