import Control.Applicative ((<$>)) import Data.Set (Set) import qualified Data.Set as S main :: IO () main = solve <$> getLine >>= print solve :: String -> Int solve = S.size . f S.empty [] where f st rs [x] = S.insert (x:rs) st f st rs ss = let st1 = f st (head ss : rs) (tail ss) st2 = f st1 (last ss : rs) (init ss) in st2