-- Part 1

contains3Vowels :: String -> Bool
contains3Vowels = go 0
  where go :: Int -> String -> Bool
        go 3 _ = True
        go _ [] = False
        go n (x:xs)
          | x `elem` vowels = go (n+1) xs
          | otherwise       = go  n    xs

        vowels = "aeiou"
contains3Vowels :: String -> Bool
contains3Vowels = go 0
  where go :: Int -> String -> Bool
        go 3 _ = True
        go _ [] = False
        go n (x:xs)
          | x `elem` vowels = go (n+1) xs
          | otherwise       = go  n    xs

        vowels = "aeiou"
contains3Vowels = go 0
  where go :: Int -> String -> Bool
        go 3 _ = True
        go _ [] = False
        go n (x:xs)
          | x `elem` vowels = go (n+1) xs
          | otherwise       = go  n    xs

        vowels = "aeiou"