//问题分析:
//	 此问题很简单,将密码消息中的每个字母分别进行相应的变换即可。关键是输入数据中的消息行、读入消息行的数据。每个消息行包括多个单词,以及若干个标点符号。
//	 a.scanf函数输入字符串时,每个字符串中不能有空格。每读到单词“START”,则表示下面读到的是一个消息行中的单词,直到读到单词“END”为止。gets函数则一次可   
//   读入一整行。
//	 b.对消息解密时,需要将表示消息中单词的字符串作为普通的数组,依次变换其中的每个字母。

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <iostream>
using namespace std;

char str1[6] = "START";
char str2[4] = "END";
char str3[11] = "ENDOFINPUT";
char original[27] = "VWXYZABCDEFGHIJKLMNOPQRSTU";
char code[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

int main()
{
	char instr[210];
	while (gets(instr)){
		if (strcmp(instr, str3) == 0) break;
		else if (strcmp(instr,str1) == 0 || strcmp(instr, str2) == 0) continue;
		else{
			int len = strlen(instr);
			for (int i = 0; i < len; i++){
				if (isalpha(instr[i])){
					for (int j = 0; j < 26; j++){
						if (instr[i] == code[j]){
							cout << original[j];
						}
					}
				}
				else cout << instr[i];
			}
		}
		cout << endl;
	}
	return 0;
}