#include <bits/stdc++.h>

using namespace std;

string a[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 b = " ',-.?ABCDEFGHIJKLMNOPQRSTUVWXYZ";
string c[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"};
string d = "ABCDEFGHIJKLMNOPQRSTUVWXYZ .,-'?";

int main(){
    string s;
    map<string, string> p, q;
    for(int i=0; i< 32; i++){p[a[i]] = b.substr(i, 1); q[d.substr(i, 1)] = c[i];}
    while(getline(cin, s)){
        string t, ret;
        for(int i=0; i< s.size(); i++) t += q[s.substr(i, 1)];
        for(int i=0; i< t.size(); i++){
            for(int j=5; 1 <= j; j--){
                if(p[t.substr(i, j)].size() != 0){
                    ret += p[t.substr(i, j)];
                    i += j-1;
                    break;
                }
            }
        }
        cout << ret << endl;
    }
}