Go: package main

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

var scanner = bufio.NewScanner(os.Stdin)

func main() {
	for scanner.Scan() {
		var result string
		line := scanner.Text()
		key := make(map[string]string)

		var i int32
		for ; i < 52; i++ {
			makeKey(key, i)
			result = decode(key, line)

			if strings.Contains(result, "the") {
				break
			} else if strings.Contains(result, "this") {
				break
			} else if strings.Contains(result, "that") {
				break
			}
		}

		fmt.Println(result)
	}
}

func makeKey(key map[string]string, shift int32) {
	for i := 'a'; i <= 'z'; i++ {
		cipher := (i + shift)
		if cipher > 'z' {
			cipher = cipher%'z' + 'a' - 1
		} else if cipher < 'a' {
			cipher = cipher + ('z' - 'a') + 1
		}
		key[string(i)] = string(cipher)
	}
}

func decode(key map[string]string, cipher string) string {
	var result string
	for _, v := range cipher {
		if key[string(v)] != "" {
			result += key[string(v)]
		} else {
			result += string(v)
		}
	}
	return result
}

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)

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-1):
				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=s+k
print("")

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

import sys
import os
from math import sin, cos
import math

alphabet = 'abcdefghijklmnopqrstuvwxyz'


def rotate_char(c, num):
    if c == ' ' or c == '.' or c == '\n':
        return c

    n = ord(c) + num
    if n > 122:
        n -= 26
    return chr(n)

def rotate_string(s, num):
    ret = []
    for c in s:
        new_c = rotate_char(c, num)
        ret.append(new_c)
    return ''.join(ret)

for s in sys.stdin:
    for i in range(1, 26):
        rotated = rotate_string(s, i)
        if 'the' in rotated or 'this' in rotated or 'that' in rotated:
            print(rotated, end='')
            break

Python: s=input()

for _ in range(26):
    if " this." in s or " that." in s or " the." in s or " 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] != "a":
                s[i] = chr(ord(s[i])-1)
            else:
                s[i] = "z"
    s="".join(s)

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

import sys
import os
from math import sin, cos
import math

alphabet = 'abcdefghijklmnopqrstuvwxyz'


def rotate_char(c, num):
    if c == ' ' or c == '.' or c == '\n':
        return c

    n = ord(c) + num
    if n > 122:
        n -= 26
    return chr(n)

def rotate_string(s, num):
    ret = []
    for c in s:
        new_c = rotate_char(c, num)
        ret.append(new_c)
    return ''.join(ret)

s = input()
for i in range(1, 26):
    rotated = rotate_string(s, i)
    if 'the' in rotated or 'this' in rotated or 'that' in rotated:
        print(rotated, end='')
        break

Python: def decode(s, n):
    a = ""
    for i in s:
        if i.isalpha():
            a += chr((ord(i) - 97 + n) % 26 + 97)
        else:
            a += i
    return a

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

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

Python: import sys
def l(s,n):
    o=ord(s.lower())
    if not 97<=o<=122:
        return s
    if 97<=o+n<=122:
        if 97<=ord(s)<=122:
            return chr(o+n)
        else:
            return chr(o+n).upper()
    elif o+n>122:
        if 97<=ord(s)<=122:
            return chr(o+n-26)
        else:
            return chr(o+n-26).upper()

for t in sys.stdin:
    s=t[:-1]
    for i in range(0,26):
        cv=lambda y:"".join(map(lambda x:l(x,i),y))
        if cv("this") in s or cv("that") in s or cv("the") in s:
            break
    print("".join(map(lambda x:l(x,-i),s)))

Python: import sys

while 1:
	try:
		s = sys.stdin
		li = s.split()

		for i in li:
			if len(i) == 4 or len(i) == 3:
				a = ord(i[0]) - ord(i[1])
				b = ord(i[1]) - ord(i[2])
				c = ord(i[2]) - ord(i[3])
		
				if a == 12 and b == -1 and c == -10:
					n = ord(i[0]) - ord("t")
					break
				elif a == 12 and b == 3:
					n = ord(i[0]) - ord("t")
					break
				elif a == 12 and b == 7 and c == -19:
					n = ord(i[0]) - ord("t")
					break

		o = ""
		for c in s:
			if ord(c) >= 97 and ord(c) <= 122:
				o += chr(ord(c) - n)
			else:
				o += c

		print(o)
	except:
		exit()

Python: 
import string
import sys

def CaesarCipher():
    
    low=string.ascii_lowercase
    
    for cry in sys.stdin: 
        for i in range(1,27):
            
            dec=cry.translate(str.maketrans(low,low[i:]+low[:i]))
    
            if 'this' in dec or 'that' in dec or 'the' in dec:
                print(dec)
            
                
    
CaesarCipher()

Python: chars = 'abcdefghijklmnopqrstuvwxyz'
while True:
    try:
        string = input()
    except:
        exit()

    for i in range(1, 27):
        t = string.translate(string.maketrans(chars, chars[i:] + chars[:i]))
        if 'the' in t or 'this' in t or 'that' in t:
            print(t)

Python: t = ord("t")
z = ord("z")
a = ord("a")

def _decode(tv, v):
    spam = ord(v)
    if not (a <= spam <= z):
        return v

    x = t - ord(tv)
    y = spam + x

    if y > z:
        y = a + (y % z)
    elif y < a:
        y = z - (a - y)

    return chr(y)

while 1:
    try:
        txt = input()
        for s in [x for x in txt.split() if len(x) <= 4 and len(x) >= 3]:
            tv = s[0]
            dec_val = ''.join(list(map(lambda x:_decode(tv,x),s)))

            if (dec_val in ('this', 'the', 'that')):
                print(''.join(list(map(lambda x:_decode(tv,x),txt))))
                break
    except:
        break