Consider a variation of the game Go where one player has gone ahead and placed several pieces all at once. Assuming that the second player also gets to place several pieces at once, find the minimum number of pieces that the second player needs to place in order to capture all of the pieces placed by the first player.
The first player's pieces will be represented by ones and the empty spaces will be represented by zeros.
To capture a piece, it and every piece that touches it need to be surrounded horizontally and vertically. The board won't necessarily be square. If the first player filled the entire board, return 0.
So for the board:
1 0 0 1 0 0 0 1 0 0 1 0
The resulting board, with the fewest pieces required, would look like
1 2 2 1 2 0 2 1 0 2 1 2
and your program would return 6