fs.cpp
//
// File: f1.cc
// Author: cteam029
//
// Created on October 19, 2013, 10:26 AM
//
#include <cstdlib>
#include <cstdio>
#include <iostream>
#include <vector>
using namespace std;
string encode(char a){
string res;
switch(a){
case 'A':
res = ".-";
break;
case 'B':
res = "-...";
break;
case 'C':
res = "-.-.";
break;
case 'D':
res = "-..";
break;
case 'E':
res = ".";
break;
case 'F':
res = "..-.";
break;
case 'G':
res = "--.";
break;
case 'H':
res = "....";
break;
case 'I':
res = "..";
break;
case 'J':
res = ".---";
break;
case 'K':
res = "-.-";
break;
case 'L':
res = ".-..";
break;
case 'M':
res = "--";
break;
case 'N':
res = "-.";
break;
case 'O':
res = "---";
break;
case 'P':
res = ".--.";
break;
case 'Q':
res = "--.-";
break;
case 'R':
res = ".-.";
break;
case 'S':
res = "...";
break;
case 'T':
res = "-";
break;
case 'U':
res = "..-";
break;
case 'V':
res = "...-";
break;
case 'W':
res = ".--";
break;
case 'X':
res = "-..-";
break;
case 'Y':
res = "-.--";
break;
case 'Z':
res = "--..";
break;
case '_':
res = "..--";
break;
case ',':
res = ".-.-";
break;
case '.':
res = "---.";
break;
case '?':
res = "----";
break;
}
return res;
}
char decode(string a){
string res;
for(char i = 'A'; i <= 'Z'; i++){
switch(i){
case 'A':
res = ".-";
break;
case 'B':
res = "-...";
break;
case 'C':
res = "-.-.";
break;
case 'D':
res = "-..";
break;
case 'E':
res = ".";
break;
case 'F':
res = "..-.";
break;
case 'G':
res = "--.";
break;
case 'H':
res = "....";
break;
case 'I':
res = "..";
break;
case 'J':
res = ".---";
break;
case 'K':
res = "-.-";
break;
case 'L':
res = ".-..";
break;
case 'M':
res = "--";
break;
case 'N':
res = "-.";
break;
case 'O':
res = "---";
break;
case 'P':
res = ".--.";
break;
case 'Q':
res = "--.-";
break;
case 'R':
res = ".-.";
break;
case 'S':
res = "...";
break;
case 'T':
res = "-";
break;
case 'U':
res = "..-";
break;
case 'V':
res = "...-";
break;
case 'W':
res = ".--";
break;
case 'X':
res = "-..-";
break;
case 'Y':
res = "-.--";
break;
case 'Z':
res = "--..";
break;
}
if(res == a){
return i;
}
}
res = "..--";
if(a == res)return '_';
res = ".-.-";
if(a == res)return ',';
res = "---.";
if(a == res)return '.';
res = "----";
if(a == res)return '?';
return '?';
}
//
//
//
int main(int argc, char** argv) {
string line, mid, tmp, res;
vector <int> vec;
while(cin >> line){
vec.clear();
mid = "";
res = "";
for(unsigned int i = 0; i < line.length(); i++){
tmp = encode(line[i]);
vec.push_back(tmp.length());
mid += tmp;
}
int j = vec.size()-1;
for(unsigned int i = 0; i < mid.length(); ){
tmp = decode(mid.substr(i, vec[j]));
res += tmp;
i += vec[j--];
}
cout << res << endl;
}
return 0;
}