import Data.Char
import Data.List
import Data.Maybe

shiftChar :: Int -> Char -> Char
shiftChar n c
    | isLower c = chr $ ord 'a' + mod (ord c - ord 'a' + n) 26 
    | otherwise = c

caesar :: Int -> String -> String
caesar n = map (shiftChar n)

includeKey :: String -> Bool
includeKey s = any (\k -> isInfixOf k s) ["the", "this", "that"]

unceaser :: String -> String
unceaser s = fromJust $ find includeKey [caesar i s | i <- [1 .. 26]]

main :: IO ()
main = putStr . unlines . map unceaser . lines =<< getContents