#include<cstdio>
#include<iostream>
#include<cstring>

using namespace std;

int the[2],that[3],_this[3];

bool checkThe(char s[]){
  if(strlen(s)!=3){
    return false;
  }else{
    if(s[0]-s[1]==the[0] && s[1]-s[2]==the[1]){
      return true;
    }
  }
  return false;
}
bool checkThis(char s[]){
  if(strlen(s)!=4){
    return false;
  }else{
    if(s[0]-s[1]==_this[0] && s[1]-s[2]==_this[1] && s[2]-s[3]==_this[2]){
      return true;
    }
  }
  return false;
}
bool checkThat(char s[]){
  if(strlen(s)!=4){
    return false;
  }else{
    if(s[0]-s[1]==that[0] && s[1]-s[2]==that[1] && s[2]-s[3]==that[2]){
      return true;
    }
  }
  return false;

}
int main(){
  int key=0;
  char str[100];
  char temp[100];
 

  the[0]='t'-'h';
  the[1]='h'-'e';

  that[0]='t'-'h';
  that[1]='h'-'a';
  that[2]='a'-'t';

  _this[0]='t'-'h';
  _this[1]='h'-'i';
  _this[2]='i'-'s';
    
  char *tok;
  bool f=false;
  while(fgets(str,sizeof(str),stdin)!=NULL){
  
    for(int i=0;i<strlen(str);i++)
      temp[i]=str[i];
    temp[strlen(str)]='\0';

    str[strlen(str)]='\0';
    str[strlen(str)-1]='\0';
    tok=strtok(str," ");
 
    if(strlen(tok)==3){
      if(checkThe(tok)==true){
	key=tok[0]-'t';
	f=true;
      }
    }else if(strlen(tok)==4){
      if(checkThat(tok)==true){
	key=tok[0]-'t';
	f=true;
      }else if(checkThis(tok)==true){
	key=tok[0]-'t';
	f=true;
      }
    }
    while(f==false && tok!=NULL){
      tok=strtok(NULL," ");
      if(tok!=NULL){
	if(strlen(tok)==3){
	  if(checkThe(tok)==true){
	    key=tok[0]-'t';
	    f=true;
	  }
	}else if(strlen(tok)==4){
	  if(checkThat(tok)==true){
	    key=tok[0]-'t';
	    f=true;
	  }else if(checkThis(tok)==true){
	    key=tok[0]-'t';
	    f=true;
	  }
	}
      }
    }
   
    for(int i=0;i<strlen(temp);i++){
      if('a'<=str[i] && str[i]<='z'){
	printf("%c",temp[i]-key);
      }else{
	printf("%c",temp[i]);
      }
    }

  }

  return 0;
}