Go: package main

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

var scanner = bufio.NewScanner(os.Stdin)

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

func incrementByte(b byte) byte {
	if b >= 97 && b < 122 {
		return b + 1
	} else if b == 122 {
		return 97
	}
	return b
}

func main() {
	scanner.Split(bufio.ScanLines)

	for {
		line := nextString()
		if len(line) == 0 {
			break
		}
		for i := 0; i <= 26; i++ {
			decoded := []byte{}
			for j := 0; j < len(line); j++ {
				decoded = append(decoded, incrementByte(line[j]))
			}
			line = string(decoded)
			if strings.Contains(line, "the") || strings.Contains(line, "this") || strings.Contains(line, "that") {
				fmt.Println(line)
				break
			}
		}
	}
}

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)

Python: s = input()
b = s
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 = ''
    b = c

Python: import sys
a='abcdefghijklmnopqrstuvwxy'
for b in sys.stdin:
 b=input()
 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: while(1):
	try:
		x = [i for i in input()]
		s=0
		while(s<len(x)):
			k=s
			while(x[k]!='.' and x[k]!='\n'):
				k=k+1
			k=k+1
			n=[ i for i in range(k-s)]
			p=122-ord(x[s])
			m=ord(x[s])-97
			flag=0
			
			for i in range(p+1):
				for j in range(s,k):
					if x[j]==' ' or x[j]=='.':
						n[j-s]=x[j]
					else:
						n[j-s]=chr(ord(x[j])+i)
				moji=''
				for mk in n:
					moji += mk
				if moji.find('that')!=-1 or moji.find('this')!=-1 or moji.find('the')!=-1 :
					flag=1
					print(moji,end="")
			if flag==0:
				for i in range(m+1):
					for j in range(s,k):
						if x[j]==' ' or x[j]=='.':
							n[j-s]=x[j]
						else:
							n[j-s]=chr(ord(x[j])-i)
					moji=''
					for mk in n:
						moji += mk
					if moji.find('that')!=-1 or moji.find('this')!=-1 or moji.find('the')!=-1 :
						print(moji,end="")
			s=k
		print("")
	except EOFError:
		break

Python: import string
d = {c:ord(c)-97 for c in string.ascii_lowercase}
b = {v:k for k, v in d.items()}
while True:
    try:
        s = input()
    except:
        break
    t = 0
    for token in list(filter(lambda x: len(x) in [3, 4], s[:-1].split())):
        t = d[token[0]]%26-19
        word = ''.join([b[d[c]%26-t] for c in token])
        if word in ['the', 'that', 'this']:
            break
    ans = [' ' if c == ' ' else b[d[c]%26-t] for c in s[:-1]]+['.']
    print(''.join(ans))

Python: b = input()
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)|
    (' the' in c) | (' this' in c) | (' that' in c)):
        print(c)
        break
    b = c

Python: import fileinput
import string

alphabetArray = list(string.ascii_lowercase)

for data in fileinput.input():
    for n in range(-26, 27):
        replacedStrAry = list(data.replace('\n', '').replace('\r', ''))
        for index in range(0, len(replacedStrAry)):
            if not replacedStrAry[index] in alphabetArray:
                continue
            if n >= 0:
                replacedStrAry[index] = alphabetArray[(alphabetArray.index(replacedStrAry[index]) + n) % 26]
            else:
                replacedStrAry[index] = replacedStrAry[index] = alphabetArray[alphabetArray.index(replacedStrAry[index]) + n]
        replacedStr = "".join(replacedStrAry)
        replacedStrSplitedBySpace = replacedStr.split(' ')
        if "the" in replacedStrSplitedBySpace or "this" in replacedStrSplitedBySpace or "that" in replacedStrSplitedBySpace:
            print(replacedStr)
            break