#! /usr/bin/env stack -- stack --resolver lts-12.20 --install-ghc script {-# LANGUAGE FlexibleContexts, LambdaCase #-} module Main where import Data.Function (fix, on) import qualified Data.Char as C import qualified Data.List as L main :: IO () main = interact $ \input -> show $ L.minimumBy (compare `on` snd) $ [ react $ filter (\c -> C.isAlpha c && c /= r && c /= C.toUpper r) input | r <- ['a'..'z'] ] react input = let scan (x:y:zs) = if x `reactsWith` y then scan zs else (x : scan (y:zs)) scan zs = zs input' = scan input result = (input', length input') in if input' == input then result else react input' x `reactsWith` y = (C.isUpper x && C.toLower x == y) || (C.isLower x && C.toUpper x == y)