#include<stdio.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include<algorithm>
#include<set>
#include<queue>
#include<string>
#include<vector>
#include<map>
#include<stack>
#include<list>
using namespace std;
#define inf 0x3f3f3f3f

char d[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};

int main(){
	char s[110];
	char c;
	int i=0;
	while(scanf("%c",&c)!=EOF){
		s[i++] = c;
	}
	int l = strlen(s),j,k,m,t;
	for(i=0;i<=26;i++){
		char t[110]={'a'};
		for(j=0;j<l;j++){
			if(s[j]>='a'&&s[j]<='z'){
				t[j] = d[(s[j]-'a'+i)%26];
			}
			else t[j] =s[j];
		}
		int a=0,b=0,c=0;
		for(j=0;j<l-2;j++){
			if(t[j]=='t'&&t[j+1]=='h'){
				if(t[j+2]=='e'&&!(t[j+3]>='a' && t[j+3]<='z')){
					a++;
				}
				if(t[j+2]=='i'&&t[j+3]=='s'&&!(t[j+4]>='a'&&t[j+4]<='z')){
					b++;
				}
				if(t[j+2]=='a'&&t[j+3]=='t'&&!(t[j+4]>='a'&&t[j+4]<='z')){
					c++;
				}
			}
		}
		if(a&&b&&c)break;
	}
	for(j=0;j<l;j++){
		if(s[j]>='a'&&s[j]<='z'){
			printf("%c",d[(s[j]-'a'+i)%26]);
		}
		else printf("%c",s[j]);
	}
	puts("");
	return 0;
}
