import Control.Monad import Control.Applicative import Data.List import qualified Data.Map as Map import Data.Array import qualified Data.ByteString.Char8 as BC import Data.Maybe strToInt s = (read :: String -> Int) s b2i xs = foldl (\x y -> 2 * x + y) 0 $ map (\x -> read [x]) xs i2b = concat . (map show) . reverse . i2b' where i2b' 0 = []; i2b' n = mod n 2 : i2b' (div n 2) main = do ham <- getLine let answ1 = show $ i2b $ 2 * (b2i $ conv ham) let answ2 = foldr (++) [] (map ans answ1) putStrLn $ answ2 ans :: Char -> String ans '0' = "ham" ans '1' = "hamu" ans _ = "" conv :: String -> String conv [] = [] conv ham = if (length ham) <= 3 then "0" else if (take 4 ham) == "hamu" then "1" ++ conv (drop 4 ham) else "0" ++ conv (drop 3 ham)