import Data.List import Data.Set (Set) import qualified Data.Set as Set main :: IO () main = do s <- getLine print $ solve (length s) s solve :: Int -> String -> Int solve n k = Set.size $ go 0 (n - 1) "" Set.empty where go :: Int -> Int -> String -> Set String -> Set String go l r s set | l > r = Set.insert s set | otherwise = Set.union (go (l + 1) r (s ++ [k !! l]) set) (go l (r - 1) (s ++ [k !! r]) set)