#include <iostream>
#include <string>
#include <map>
using namespace std;

map<char, string> table = {
    {'A', "00000"},
    {'B', "00001"},
    {'C', "00010"},
    {'D', "00011"},
    {'E', "00100"},
    {'F', "00101"},
    {'G', "00110"},
    {'H', "00111"},
    {'I', "01000"},
    {'J', "01001"},
    {'K', "01010"},
    {'L', "01011"},
    {'M', "01100"},
    {'N', "01101"},
    {'O', "01110"},
    {'P', "01111"},
    {'Q', "10000"},
    {'R', "10001"},
    {'S', "10010"},
    {'T', "10011"},
    {'U', "10100"},
    {'V', "10101"},
    {'W', "10110"},
    {'X', "10111"},
    {'Y', "11000"},
    {'Z', "11001"},
    {' ', "11010"},
    {'.', "11011"},
    {',', "11100"},
    {'-', "11101"},
    {'\'', "11110"},
    {'?', "11111"}
};
map<string, char> table2 = {
    {"100101", 'A'},
    {"10011010", 'B'},
    {"0101", 'C'},
    {"0001", 'D'},
    {"110", 'E'},
    {"01001", 'F'},
    {"10011011", 'G'},
    {"010000", 'H'},
    {"0111", 'I'},
    {"10011000", 'J'},
    {"0110", 'K'},
    {"00100", 'L'},
    {"10011001", 'M'},
    {"10011110", 'N'},
    {"00101", 'O'},
    {"111", 'P'},
    {"10011111", 'Q'},
    {"1000", 'R'},
    {"00110", 'S'},
    {"00111", 'T'},
    {"10011100", 'U'},
    {"10011101", 'V'},
    {"000010", 'W'},
    {"10010010", 'X'},
    {"10010011", 'Y'},
    {"10010000", 'Z'},
    {"101", ' '},
    {"010001", '.'},
    {"000011", ','},
    {"10010001", '-'},
    {"000000", '\''},
    {"000001", '?'}
};

int main() {
    string s;
    while (cin >> s) {
        string s2 = "";
        for (char c : s) {
            s2 += table[c];
        }
        string s3 = "", tmp = "";
        for (char c : s2) {
            tmp += c;
            if (table2.find(tmp) != table2.end()) {
                s3 += table2[tmp];
                tmp = "";
            }
        }
        cout << s3 << endl;
    }
    return 0;
}