#include <bits/stdc++.h>

//const static double	de_PI	= 3.14159265358979323846;
//const static int	de_MOD	= 1000000007;
//const static int	de_MAX	= 999999999;
//const static int	de_MIN = -999999999;

inline std::vector<std::string> Split_String(const std::string &str, const char key) {

	std::vector<std::string> result;
	std::stringstream SS(str);
	std::string temp;

	while (std::getline(SS, temp, key)) {
		result.push_back(temp);
	}

	return(result);

}

inline std::string Decode_CaesarCipher(const std::string &cryptogram, const int shift) {

	std::string temp = cryptogram;
	for (unsigned int i = 0; i < temp.length(); i++) {
		if (65 <= temp[i] && temp[i] <= 90) {
			temp[i] = temp[i] - shift;
			if (temp[i] < 65) {
				temp[i] += 26;
			}

		}
		else if (97 <= temp[i] && temp[i] <= 122) {
			temp[i] = temp[i] - shift;
			if (temp[i] < 97) {
				temp[i] += 26;
			}
		}
	}

	return(temp);
}

int main(void) {

	//std::ifstream in("123.txt");	std::cin.rdbuf(in.rdbuf());

	std::string temp, th;
	std::vector<std::string> split, len3, len4, ans;

	while (std::getline(std::cin, temp)) {

		//??????????????§?????????????????????
		split = Split_String(temp, ' ');
		
		for (unsigned int i = 0; i < split.size(); i++) {

			//?????????????????????
			if (split[i].find(".", 0) != std::string::npos) {
				split[i].erase(split[i].begin() + split[i].find(".", 0));
			}

			//3??????/?????????????????????????????????
			switch (split[i].length()) {
			case 3:len3.push_back(split[i]); break;
			case 4:len4.push_back(split[i]); break;
			}
		}

		//3??????????????¨???????????????????????????????????´???????????????????????¢???(?????????"t"????£?)
		for (unsigned int i = 0; i < len3.size(); i++) {
			for (unsigned int j = 0; j < len4.size(); j++) {
				if (len3[i].substr(0, 2) == len4[j].substr(0, 2)) {
					if (th.find(len3[i][0], 0) == std::string::npos) {
						th.push_back(len3[i][0]);
					}
				}
			}
		}

		//t????£???????????????°???????????????3??????????????§"the"?????§???????????????
		int shift = 0;
		for (unsigned int i = 0; i < th.length(); i++) {
			if ('t' <= th[i]) {
				shift = th[i] - 't';
			}
			else {
				shift = th[i] - 't' + 26;
			}
			for (unsigned int j = 0; j < len3.size(); j++) {
				if (Decode_CaesarCipher(len3[i], shift) == "the") {
					j = len3.size();
					i = th.length();
				}
			}
		}

		//???????????????????´?
		ans.push_back(Decode_CaesarCipher(temp, shift));

		//?¬???±??????
		temp.clear(); th.clear();
		split.clear(); len3.clear(); len4.clear();
	}

	//????????????
	for (unsigned int i = 0; i < ans.size(); i++) {
		std::cout << ans[i] << std::endl;
	}


}