import Control.Monad
import Control.Applicative
import Data.Functor
import Data.List
import Data.List.Split
import Data.Char

readInt = read :: String -> Int
getInt = readLn :: IO Int
getInts = map readInt . words <$> getLine
cond t f c = if c then t else f
-- end of templete

next c
  | c == 'z' = 'a'
  | isAsciiLower c = succ c
  | otherwise = c

caesar s = map next s

main = do
    lines <$> getContents >>= mapM_ (putStrLn . head . filter (flip any ["the", "this", "that"] . flip isInfixOf) . take 26 . iterate caesar )