import Control.Applicative
import Data.Char (readLitChar)
import Data.List
import System.IO

main = do
  eof <- isEOF
  if eof then return ()
         else do
            dataset <- getLine
            mapM_ putStrLn $ decodeCaesar (escape dataset)
            main

shiftChar :: Int -> Char -> Char
shiftChar n c
    | c == '.' = '.'
    | c == ' ' = ' '
    | c == '\n' = '\n'
    | otherwise = toEnum.(+97).(`mod` 26).(+ n).(subtract 97).fromEnum $ c

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

decodeCaesar :: String -> [String]
decodeCaesar str = filter (\s -> ("this" `isInfixOf` s) || ("that" `isInfixOf` s) || ("the" `isInfixOf` s))
    $ map shiftString [1..25] <*> [str]

escape :: String -> String
escape [] = []
escape str = x : escape rest
  where [(x,rest)] = readLitChar str