import Control.Applicative
import Control.Monad
import Data.Char

decode pass offset = map (map (\c -> chr $ do
  let oldChar = ord c
  if oldChar == ord '.'
    then oldChar
    else do
      let newChar = oldChar - offset
      if newChar < ord 'a'
        then newChar + 26
        else newChar)) pass

decodeLists line = unwords $ search $ zipWith decode (take 25 $ repeat line) [1..25]

search :: [[String]] -> [String]
search [] = []
search (x:xs) = if elem "the" x || elem "this" x || elem "that" x || elem "the." x || elem "this." x || elem "that." x

                  then x
                  else search xs

main = do
  input <- (fmap words . lines) <$> getContents
  let ans = unlines $ fmap decodeLists input
  putStr ans