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

void split(string &s, vector<string> &v) {
  string tmp;
  for (auto &&ch : s) {
    if (ch == ' ') {
      if (!tmp.empty()) {
        v.push_back(tmp);
        tmp.clear();
      }
    } else {
      tmp += ch;
    }
  }
  if (!tmp.empty()) {
    v.push_back(tmp);
  }
}

char normalize(char &c, int n) {
  if (c == '.')
    return c;
  int t;
  t = (int(c) + n) % 26;
  return (t > 18) ? char(t + 78) : char(t + 104);
}

void print(vector<string> &v) {
  for (auto i = v.begin(), e = v.end(); i != e; i++) {
    if (i == e - 1)
      cout << *i << endl;
    else
      cout << *i << " ";
  }
}

int main() {
  string s;
  while (getline(cin, s)) {
    int n;
    vector<string> v;
    split(s, v);
    for (int i = 0; i < 26; i++) {
      vector<string> ret;
      for (auto &&ss : v) {
        string tmp;
        for (auto &&c : ss) {
          tmp += normalize(c, i);
        }
        ret.push_back(tmp);
      }
      if (find(ret.begin(), ret.end(), "this") != ret.end() ||
          find(ret.begin(), ret.end(), "that") != ret.end() ||
          find(ret.begin(), ret.end(), "the") != ret.end()) {
        print(ret);
        break;
      }
    }
    s.clear();
  }

  return 0;
}

