//C++14 (Clang 3.8.0)

#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <string>
#include <climits>
using namespace std;
typedef long long ll;
typedef pair<long long,long long> P;

bool judge(string s1,int x){
  for(int i=0;i<s1.size();i++){
    if((int)s1[i]+x>122 or (int)s1[i]+x<97) return false;
  }
  if (s1.size()==4){
    if((char)((int)s1[0]+x)=='t' and (char)((int)s1[1]+x)=='h' and (char)((int)s1[2]+x)=='a' and (char)((int)s1[3]+x)=='t') return true;
    if((char)((int)s1[0]+x)=='t' and (char)((int)s1[1]+x)=='h' and (char)((int)s1[2]+x)==    'i' and (char)((int)s1[3]+x)=='s') return true;
  }
  if (s1.size()==3){
    if((char)((int)s1[0]+x)=='t' and (char)((int)s1[1]+x)=='h' and (char)((int)s1[2]+x)==    'e') return true;
  }
  return false;
}
int main(){
  vector<string> v;
  while(1){
    string s;
    cin>>s;
    if(s[s.size()-1]=='.'){
      string tmp="";
      for (int i=0;i<s.size()-1;i++){
        tmp+=s[i];
      }
      v.push_back(tmp);


      break;
    }
    v.push_back(s);
  }
  int ans=10000;
  for (int i=0;i<v.size();i++){
    for(int j=-123;j<123;j++){
      if(judge(v[i],j)){
        ans=j;
        break;
      }
    }
  }
  for(int i=0;i<v.size();i++){
    for (int j=0;j<v[i].size();j++)cout<<(char)(v[i][j]+ans);
    cout<<" ";
  }
  cout<<"."<<endl;
      
}

