#include <algorithm>
#include <map>
#include <vector>
#include <iostream>
#include <sstream>
#include <cstdio>
#include <cstring>
#include <cctype>
#include <cstdlib>
#include <cmath>
#include <string>
#include <queue>
#include <stack>
using namespace std;

#define REP(i,n) for(int i=0; i<n; ++i)
#define IREP(it,array) for(vector<int>::iterator it=array.begin(); it!=array.end(); ++it)
#define SREP(it,array) for(vector<string>::iterator it=array.begin(); it!=array.end(); ++it)
#define MP make_pair
typedef long long LL;
#define EPS (1e-6)
double zero(double d){
  return d < EPS ? 0.0 : d;
}

typedef pair<int,int> P;

int main()
{
  cout.setf(ios::fixed, ios::floatfield);
  cout.precision(7);
  int INF = 1000000;

  string str;
  while(getline(cin,str)){

    REP(j,25){
      string nstr = "";
      REP(i, str.length()){
	if(str[i]==' ' || str[i]=='.'){
	  nstr += str[i];
	  continue;
	}
	int bd = str[i] - 'a';
	bd -= j;
	if(bd < 0)
	  bd += 26;
	nstr += 'a'+bd;
      }

      if( nstr.find("the") != string::npos ||
	  nstr.find("this") != string::npos ||
	  nstr.find("that") != string::npos ){       
	cout << nstr << endl;
	break;
      }
    }
  }

  return 0;
}