import qualified Data.Set as S


main :: IO ()
main = interact $ show . S.size . solve . tail . reverse


solve :: String -> S.Set String
solve s = solve' ("", s) where
    solve' (str, "") = S.singleton str
    solve' (str, rest) = let rest' = reverse rest in
                            S.union (solve' (head rest:str, tail rest)) (solve' (head rest':str, tail rest'))