#include <iostream>
#include <string>
#include <algorithm>
#include <cstdlib>
#include <vector>
#include <sstream>      // std::ostringstream
std::vector<std::string> split(const std::string &str, char sep)
{
	std::vector<std::string> v;
	std::stringstream ss(str);
	std::string buffer;
	while (std::getline(ss, buffer, sep)) {
		v.push_back(buffer);
	}
	return v;
}
using namespace std;
int main() {
	string str;
	string w[3] = { "the","this",  "that" };
	while (true) {
		getline(cin, str);

		if (str == "")break;

		vector<string> v = split(str, ' ');

		int key;
		bool f = false;

		v[v.size() - 1].pop_back();

		for (int i = 0; i < v.size();i++) {
			for (int j = 1; j < 26;j++) {
				string temp;
				for (int k = 0; k < v[i].size();k++) {
					temp += (v[i][k] - 'a' + j) % 26 + 'a';
				}
				for (int k = 0; k < 3;k++) {
					if (temp == w[k]) {
						f = true;
						key = j;
						break;
					}
				}
				if (f)break;
			}
			if (f)break;
		}

		for (int i = 0; i < v.size();i++) {
			for (int k = 0; k < v[i].size();k++) {
				cout << char((v[i][k] - 'a' + key) % 26 + 'a');
			}
			if (i == v.size() - 1) {
				cout << ".";
			}
			else {
				cout << " ";
			}
		}
		cout << endl;
	}
}