// echoes (c) 2011 org100h.com

#include <algorithm>
#include <cctype>
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
using namespace std;

const struct {
    char chr;
    string esc;
} escmap[] = {
    'a', "\a", 'b', "\b", 'f', "\f", 'n', "\n", 'r', "\r", 't', "\t", '\'', "\'", '"', "\"",
};
const auto escmap_entries = sizeof(escmap) / sizeof(*escmap);

enum cond {
    NORMAL,
    ESCAPE,
};

string search_escmap(char src) {
    for(auto i = 0; i < escmap_entries; i++) if(escmap[i].chr == src) return escmap[i].esc;
    throw "invalid sequence found.";
}

string convert_escape(char src, cond flag) {
    return islower(src) && flag == ESCAPE ? search_escmap(src) : string(1, src);
}

string decode_escape(const string & src) {
    string dst;
    cond flag = NORMAL;
    for(auto i = 0; i < src.length(); i++) {
        if(src[i] == '\\') {
            if(flag == ESCAPE) dst += "\\";
            flag = (flag == ESCAPE) ? NORMAL : ESCAPE;
            continue;
        }
        else {
            dst += convert_escape(src[i], flag);
            flag = NORMAL;
        }
    }
    return dst;
}

int main(int argc, char * argv[]) {
    try {
        vector<string> args;
        copy(&argv[1], &argv[argc], back_inserter(args));
        for(auto I = args.begin(); I != args.end(); ++I) {
            if((*I)[0] == '$') {
                if(I->length() > 1 && (*I)[1] == '$'){
                    cout << decode_escape(I->substr(1));
                } else {
                    cout << I->substr(1);
                }
            } else {
                cout << decode_escape(*I);
            }
            cout << endl;
        }
        return EXIT_SUCCESS;
    } catch(const char * cause) {
        cout << "error: " << cause << endl;
    } catch(...) {
        cout << "unknown error.";
    }
    return EXIT_FAILURE;
}