Go: package main

import (
	"bufio"
	"os"
	"strings"
	"fmt"
	"reflect"
)

var scanner = bufio.NewScanner(os.Stdin)

func nextString() string {
	scanner.Scan()
	return scanner.Text()
}

func cipher(text string, direction int, int_shift int) string {
	shift, offset := rune(int_shift), rune(26)
	runes := []rune(text)
	for index, char := range runes {
		switch direction {
		case 1:
			if char >= 'a' && char <= 'z'-shift || char >= 'A' && char <= 'Z'-shift {
				char = char + shift
			} else if char > 'z'-shift && char <= 'z' || char > 'Z'-shift && char <= 'Z' {
				char = char + shift - offset
			}
		case -1:
			if char >= 'a'+shift && char <= 'z' || char >= 'A'+shift && char <= 'Z' {
				char = char - shift
			} else if char >= 'a' && char < 'a'+shift || char >= 'A' && char < 'A'+shift {
				char = char - shift + offset
			}
		}
		runes[index] = char
	}
	return string(runes)
}

func main() {
	for {
		infos := strings.Split(nextString(), " ")
		plain := make([]string, len(infos))
		if reflect.DeepEqual(infos, []string{}) {
			break
		}
		fmt.Println(infos)
		Decryption:
			for i := 0; i < 26; i++ {
				for j := range infos {
					plain[j] = cipher(infos[j], 1, i)
				}
				for j := range plain {
					if plain[j] == "this" || plain[j] == "that" || plain[j] == "the" {
						break Decryption
					}
				}
			}
			fmt.Println(strings.Join(plain, " "))
	}
}

Python: # -*- coding: utf-8 -*-

import sys
import codecs

for line in sys.stdin:
    for i in range(1, 26):
        ans = ""
        for j in range(len(line)):
            a = ord(line[j])
            if ord('a') <= a <= ord('z'):
                if a-i >= ord('a'):
                    ans = ans + chr(a-i)
                else:
                    ans = ans + chr(a-i+26)
            else:
                ans = ans + line[j]
        if "the" in ans or "this" in ans or "that" in ans:
            break
    sys.stdout.write(ans)

Python: import sys
a='abcdefghijklmnopqrstuvwxy'
for b in sys.stdin:
 for i in range(26):
  c=''.join(a[ord(e)-97-i]if e in a else e for e in b)
  if any(('the'in c,'this'in c,'that'in c)):print(c)

Python: import sys


def _rot(c, i):
    if ord("a") < ord(c) and ord(c) < ord("z"):
        return chr((ord(c) - ord("a") + i) % 26 + ord("a"))
    if ord("A") < ord(c) and ord(c) < ord("Z"):
        return chr((ord(c) - ord("A") + i) % 26 + ord("A"))
    return c


def rot(str, i):
    g = [_rot(c, i) for c in str]
    return "".join(g)


def caesar(str):
    test=[]
    for i in range(26):
        test = rot(str, i).split()
        if ("this" in test) or ("that" in test) or ("the" in test)or("this." in test) or ("that." in test):
            return " ".join(test)


for line in sys.stdin:
    print(caesar(line))

Python: s = []
while True:
    try:
        s.append(input())
    except:
        break

for e in range(len(s)):
    st = list(map(str,s[e]))
    t = []
    for c in st:
        t.append(ord(c))    

    for i in range(26):
        string = ''
        for j in range(len(st)):
            if t[j] >= 97 and 122 >= t[j]:
                l = 97 + ((t[j] - 97 + i) % 26)
                string += chr(l)
            
            else:
                string += chr(t[j])
        if 'this' in string or 'the' in string or 'that' in string:
            print(string)

Python: s=input()

while True:
    if "this" in s or "that" in s or "the" in s:
        print(s)
        break

    s=list(s)
    for i in range(len(s)):
        if ord(s[i]) <= ord("z") and ord(s[i]) >= ord("a"):
            if s[i] != "z":
                s[i] = chr(ord(s[i])+1)
            else:
                s[i] = "a"
    s="".join(s)

Python: import sys
b = sys.stdin
for i in range(1,26):
    c = ''
    for j in b:
        if(j == 'z'):
            c += ('a')
        elif(str.isalpha(j) == 1):
            c += (chr(ord(j) + 1))
        else:
            c += j
    if(('the' in c) | ('this' in c) | ('that' in c)):
        print(c)
        break
    b = c

Python: import sys
for b in sys.stdin:
 for i in range(26):
  c=''.join([e,chr((ord(e)-96+i)%26+97)][96<ord(e)<123]for e in b)
  if any(('the'in c,'this'in c,'that'in c)):print(c.strip())

Python: def decode(s, n):
    a = ""
    for i in s:
        if i.islower():
            o = ord(i) + n
            if o <= 122:
                a += chr(o)
            else:
                a += chr(o - 26)
        else:
            a += i
    return a

def judge(s):
    a = s.split()
    return "the" in a or "this" in a or "that" in a

while True:
    try:
        s = input()
    except:
        break
    for i in range(26):
        a = decode(s, i)
        if judge(a):
            print(a)
            break

Python: import sys
def rp(char,n):
    p=ord(char)+n
    if 97 <= p-n <= 122:
        if p<=122:
            return chr(p)
        else:
            return chr(p-122+96)
    else:
        return char

def find(str):
    for j in range(-25,25):
        l="".join([rp(i,j) for i in str])
        if "this" in l or "the" in l or "that" in l:
            return l

[print(i) for i in [find(text) for text in sys.stdin] if i]

Python: def restore(n,text):
    text_list=list(text)
    for i,j in enumerate(text_list):
        if ord(j)!=46 and ord(j)!=32:
            nw=ord(j)-n
            if nw<97:
                nw=ord(j)-n+26
            text_list[i]=chr(nw)
    for i in text_list:
        print(i,end='')
    print('\n')

def textsa(str):
    str_list=list(str)
    n=len(str_list)
    sa=[]
    for i in range(n-1):
        sa.append((ord(str_list[i+1])-ord(str_list[i]))%26)
    sa.append((ord(str_list[0])-ord(str_list[n-1]))%26)
    return sa


text=input()
str=list(map(str,text.split()))
for i in str:
    if textsa(i)==[14,1,10,1] or textsa(i)==[14,19,19,0]:
        n=ord(list(i)[0])-ord('t')
    if textsa(i)==[14,23,15]:
        n=ord(list(i)[0])-ord('t')
        
restore(n,text)

Python: import sys
import math as mas

li="abcdefghijklmnopqrstuvwxyz"
for t in sys.stdin:
	for i in range(30):
		a=t.translate(str.maketrans(li,li[i:]+li[:i]))
		if 1+a.find("this") or 1+a.find("that") or 1+a.find("the"):
			print(a)
			break
#for i in sys.stdin:
#	a,b=map(int,i.split())
#	print(gcd(a,b),lcm(a,b))

Python: def chg(s,n):
    res=""
    for i in s:
        o=ord(i)
        if 97<=o<=122:
            if o+n<=122:
                res+=chr(o+n)
            else:
                res+=chr(o+n-26)
        else:
            res+=i
    return res

while True:
    try:
        s=input()
        for i in range(25,-1,-1):
            c=chg(s,i)
            if ("the" or "this" or "that") in c.split():
                print(c)
                break
    except:
        break

Python: def cshift(w):
    r = ""
    for c in w:
        if c == 'z':
            r += 'a'
        elif c == '.':
            r += '.'
        else:
            r += chr(ord(c)+1)
    return r
while True:
    try:
        sent = input()
    except EOFError:
        break
    
    words = sent.split()
    while ("the" not in words) and ("this" not in words) and ("that" not in words):
        for i, w in enumerate(words):
            words[i] = cshift(w)
    print(" ".join(words))

Python: 
import sys
 
alpha = 'abcdefghijklmnopqrstuvwxyz'
for i in sys.stdin.readlines():
    aaa = i.strip()
    for j in range(1, 27):
        text = aaa.translate(str.maketrans(alpha, alpha[j:] + alpha[:j]))
        if 'the' in text or 'this' in text or 'that' in text:
            print(text)

Python: from __future__ import (absolute_import, division, print_function,
                        unicode_literals)
from sys import stdin
from string import ascii_lowercase as letters, maketrans

table = maketrans(letters, letters[1:] + letters[:1])
for line in stdin:
    line = line.strip()
    while True:
        line = line.translate(table)
        if 'the ' in line or 'this ' in line or 'that ' in line:
            break
    print(line)