maxLeavingGuess :: GameState -> ([String],Int)
maxLeavingGuess gs
    | length gs == 1 = (Set.toList $ head gs, 0)
    | otherwise      = foldr (\x acc -> 
            let num = maxSameOutput $ sameOutputs (Set.toList x) (delete x gs)
            in 
            if num < snd acc then ((Set.toList x),num) else acc
            ) ([""],length allChord) gs
maxLeavingGuess :: GameState -> ([String],Int)
maxLeavingGuess gs
    | length gs == 1 = (Set.toList $ head gs, 0)
    | otherwise      = foldr (\x acc -> 
            let num = maxSameOutput $ sameOutputs (Set.toList x) (delete x gs)
            in 
            if num < snd acc then ((Set.toList x),num) else acc
            ) ([""],length allChord) gs
maxLeavingGuess gs
    | length gs == 1 = (Set.toList $ head gs, 0)
    | otherwise      = foldr (\x acc -> 
            let num = maxSameOutput $ sameOutputs (Set.toList x) (delete x gs)
            in 
            if num < snd acc then ((Set.toList x),num) else acc
            ) ([""],length allChord) gs