Go: package main

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

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 len(infos) == 0 {
			break
		}
		// 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: 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

Python: import sys
def main():
    ex = ["the", "this", "that"]
    lc = [chr(i) for i in range(97, 97 + 26)]
    #lowwer case

    for line in sys.stdin:
        s = line.split()

        for i in range(len(s)):
            a = s[i]
            cnt = 0
            while a not in ex and cnt < 25:
                a = list(a)
                for j in range(len(a)):
                    if a[j] == "z":
                        a[j] = "a"
                    elif a[j] == ".":
                        pass
                    else:
                        a[j] = lc[lc.index(a[j]) + 1]
                hoge = ""
                for j in a:
                    hoge += j

                a = hoge
                cnt += 1
            if cnt != 25:
                break

        for i in range(len(s)):
            a = list(s[i])
            for j in range(len(a)):
                if a[j] == ".":
                    pass
                else:
                    fuga = lc.index(a[j]) + cnt
                    if fuga > 25:
                        a[j] = lc[fuga - 26]
                    else:
                        a[j] = lc[fuga]
            else:
                hoge = ""
                for k in a:
                    hoge += k
                else:
                    s[i] = hoge

        for i in s:
            print(i, end = " ")
        print()
        print()


if __name__ == "__main__":
    main()

Python: while True:
    try:
        words=input()
        
    except:
        break
    for j in range(26):
        word=""
        for i in range(len(words)):
            if 65<=ord(words[i])<=90:
                if ord(words[i])+j>90:
                    word+=chr(ord(word[i])+j-26)
                else:
                    word+=chr(ord(word[i])+j)
            elif 97<=ord(words[i])<=122:
                if ord(words[i])+j>122:
                    word+=chr(ord(words[i])+j-26)
                else:
                    word+=chr(ord(words[i])+j)    
            else:
                word+=words[i]
        if "the" in word or "this" in word or "that" in word:
            print(word)

Python: import sys


def decrypt(c, i):
    """ ????????¶????????? """
    if c.isalpha():
        t = ord(c) - i
        if t < ord('a'):
            t = ord('z') - i + 1
        return chr(t)
    else:
        return c


if __name__ == '__main__':
    # ??????????????\???
    for line in sys.stdin:

        # ?????????????????????
        found = ''  # ?????????????????????
        for i in range(1, 25):
            decrypted = ''.join([decrypt(x, i) for x in line.strip()])
            # print(decrypted)
            if 'the' in decrypted or 'this' in decrypted or 'that' in decrypted:
                found = decrypted
                break

        # ???????????????
        if found:
            print(found)

Python: import sys, string

thelist = ["the", "this", "that"]


def s(ch, n):
    v = ""
    for c in ch:
        if c in string.ascii_lowercase:
            c = chr((ord(c) - ord("a") + int(n)) % 26 + ord("a"))
        v += c
    return v

for line in sys.stdin:
    for i in range(26):
        l = ""
        for j in line:
            l += s(j, i)
        if set(thelist) & set(l.split(" ")):
            break
    print("".join(l))