import Data.Char
import Data.List

shiftChar :: Char -> Char
shiftChar c
    | 'a' <= c && c <= 'z' = (chr . (\y -> y + ord 'a') . (`mod` 26) . (+ 1) . (\x -> x - ord 'a') . ord) c
    | otherwise = c

shift :: String -> String
shift = map shiftChar

decode :: String -> String
decode xs
    | isInfixOf "the" xs = xs
    | isInfixOf "this" xs = xs
    | isInfixOf "that" xs = xs
    | otherwise = decode $ shift xs

main :: IO ()
main  = getContents
    >>= return . lines 
    >>= return . map decode
    >>= mapM_ putStrLn