{-# LANGUAGE OverloadedStrings #-} {-# OPTIONS_GHC -Wno-incomplete-patterns #-} import qualified Data.Text as T import Data.List import GHC.Utils.Misc (count) listHasOverlap :: (Eq a) => [a] -> [a] -> Bool listHasOverlap a = not . null . intersect a toRange :: [Int] -> [Int] toRange [a, b] = [a .. b] main = interact $ show . count ((\[a,b] -> listHasOverlap a b) . map (toRange . map (read . T.unpack) . T.splitOn "-") . T.splitOn "," . T.pack) . lines