anchor.diff:  
       let part1 = sumOfUnused * lastRequiredNumber
   
  -    let part2 = "N/A"
  +    let (lastRequiredNumber, sumOfUnused) = findLastRequiredAndSumOfUnused numbers boards Seq.maxBy
  +
  +    let part2 = sumOfUnused * lastRequiredNumber
   
       part1.ToString(), part2.ToString()
positive.code:     let numbers = (Seq.head input).Split(',') |> Seq.map (fun x -> int x)
      let boards = input |> Seq.tail |> parseBoards
  
      let fastestBoard = 
          boards |> 
          Seq.map (fun board -> (neededNumbersForBoard numbers board, board)) |> 
          Seq.minBy fst
      
      let lastRequiredNumber = (numbers |> List.ofSeq)[(fst fastestBoard) - 1]
      let sumOfUnused = (sumUnmarkedNumbers (numbers |> Seq.take (fst fastestBoard)) (snd fastestBoard))
  
      //printfn "Sum %A" sumOfUnused
      //printfn "Board: %A" (snd fastestBoard)
  
negative.code:     let result = findRequired numbers (row |> List.ofSeq) 0
      result
  
  let minNeededNumbersForBoard (numbers : int seq) (board : (int) seq seq) =
      let rec red rows (required: int) =
          match rows with 
          | [] -> required
  