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: while True:
    try:
        b = input()
    except:
        break
    if 'the' in b or 'this' in b or 'that' in b:
        print(c)
    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 or 'this' in c or '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(-25, 26):
        replacedStr = data
        for i in range(0, 26):
            if n > 0:
                replacedStr = replacedStr.replace(alphabetArray[i], alphabetArray[(i + n) % 26])
            else:
                replacedStr = replacedStr.replace(alphabetArray[i], alphabetArray[i + n])
        if "this" in replacedStr or "the" in replacedStr or "that" in replacedStr:
            print(replacedStr)
            break

Python: import string
import sys

alpha = string.ascii_lowercase

for line in sys.stdin:
    for i in range(len(alpha)):
        cipher_str = ""
        for s in line:
            if s in alpha:
                cipher_str += alpha[(alpha.index(s)+i) % len(alpha)]
            else:
                cipher_str += s

        if ("the" or "this" or "that") in cipher_str:
            print(cipher_str)
            break
    else:
        print(line)

Python: x=[i for i in input()]
i=0
y=[0 for i in range(4)]
dif1=0
while(i<len(x)-1):
    s=0
    for j in range(4):
        if (x[j]!=' ')and (x[j]!='.')and (x[j]!='\n'):
            y[j]=x[j]
            s=j
        else:
            s=j
            break       
    if s==3 or s==2:
        dif1=ord(y[0])-ord('t')
        dif2=ord(y[1])-ord('h')
        if dif1==dif2:
            if s==2 and ord(y[2])-dif1==ord('e'):
                break
            else:
                if ord(y[2])-dif1==ord('a') or ord(y[2])-dif1==ord('i'):
                    break
                else:
                    i=i+s+1
        else:
            i=i+s+1
            
    else:
        i=i+s+1
for i in range(len(x)):
    if (x[i]!=' ')and (x[i]!='.')and (x[i]!='\n'):
        print(chr(int(ord(x[i]))-dif1),end="")
    else:
        print(x[i],end="")

Python: import string
strings = string.ascii_lowercase
clues = [(19, 7, 8, 18), (19, 7, 0, 19), (19, 7, 4)]
while True:
    try:
        data = input()
    except:
        break
    for word in data.split():
        if len(word) == 4 or 3:
            dif = 19 - (ord(word[0]) - 97)
            enc = ["" for _ in range(26)]
            for k, v in zip([i for i in range(dif, dif+26)], strings):
                enc[k%26] = v
            candidate = tuple(enc.index(c) for c in word)
            try:
                clues.index(candidate)
            except:
                continue
            break
    ans = ""
    for c in data:
        try:
            ans += strings[enc.index(c)]
        except:
            ans += " "
    print(ans)

Python: 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("")

Python: from sys import stdin

def ascii2num(ascii):
    return ord(ascii) - 96

def num2ascii(num):
    return chr(num + 96)

def slide(word,num):
    return ''.join([num2ascii((ascii2num(ascii) - num) % 26 + 1) if ascii != '.' else '.' for ascii in word])

def includekeyword(words):
    for word in words:
        if word in keywords:
            return True
    return False

keywords = ['the', 'this', 'that']

decode = []
for row in stdin:
    words = row.split()
    for num in range(1,27):
        tmp = [slide(word,num) for word in words]
        if includekeyword(tmp):
            decode = tmp
            print(' '.join(decode))
            break

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)
            e=c.split()
            if "the" in e or "this" in e or "that" in e:
                print(c)
                break
    except:
        break

Python: s = input()
a = "".join([chr(97 + i) for i in range(26)])
b = "".join([a[i -1] for i in range(26)])
x = str.maketrans(a, b)
while True:
    s = s.translate(x)
    if "the" in s or "that" in s or "this" in s:
        print(s)
        break

Python: 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("")

Python: a = raw_input()
b = ["the", "this", "that"]

for y in range(26):
        for x in b:
                if x in a:
                        A = a

        a = list(a)
        for x in range(len(a)):
                if a[x] == "z":
                        a[x] = "a"
                elif "a" <= a[x] < "z":
                        a[x] = chr(ord(a[x])+1)
        a = "".join(a)

print(A)

Python: s = input()
alphabet = 'abcdefghijklmnopqrstuvwxyz'

for i in range(26):
    decoded_s = ''
    for j in range(len(s)):
        if s[j] not in alphabet:
            decoded_s += s[j]
            continue

        decoded_s += alphabet[alphabet.index(s[j]) - i]

    if 'the' in decoded_s or 'this' in decoded_s or 'that' in decoded_s:
        break

print(decoded_s)