import Data.Char  -- ord, chr
import Data.List  -- isInfixOf

decaesar cipher shift = map (charshift shift) cipher
charshift shift c
  | 'a' <= c && c <= 'z' = chr ((ord c - ord 'a' + shift) `mod` 26 + ord 'a')
  | otherwise            = c

containsKeyword str = or $ map (`isInfixOf` str)  ["the", "this", "that"]

decrypt cipher =
  head . filter containsKeyword . map (decaesar cipher) $ [1..25]

main = do
  s <- getContents
  putStr . unlines . map decrypt . lines $ s