module Main where import Data.Char (digitToInt) import Data.List (sort) import Data.Set (Set) import qualified Data.Set as Set import Control.Monad parseLines :: [String] -> [String] parseLines allLines = unwords first : next where (first, rest) = break null allLines next = if null rest then [] else parseLines (tail rest) main :: IO () main = do n <- parseLines . lines <$> readFile "input/06" print $ sum $ map (Set.size . Set.fromList . filter (/= ' ')) n print $ sum $ map (Set.size . foldl1 Set.intersection . map Set.fromList . words) n