For problem statement at 1000-1999/1500-1599/1590-1599/1592/problemF2.txt this is a correct solution, but verifier at 1000-1999/1500-1599/1590-1599/1592/verifierF2.go ends with All 45 tests passed. can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
var n, m int
if _, err := fmt.Fscan(reader, &n, &m); err != nil {
return
}
A := make([][]int, n+2)
for i := range A {
A[i] = make([]int, m+2)
}
for i := 1; i <= n; i++ {
var s string
fmt.Fscan(reader, &s)
for j := 1; j <= m; j++ {
if s[j-1] == 'B' {
A[i][j] = 1
}
}
}
D := make([][]int, n+1)
for i := range D {
D[i] = make([]int, m+1)
}
totalOnes := 0
for i := 1; i <= n; i++ {
for j := 1; j <= m; j++ {
D[i][j] = A[i][j] ^ A[i+1][j] ^ A[i][j+1] ^ A[i+1][j+1]
if D[i][j] == 1 {
totalOnes++
}
}
}
adj := make([][]int, n)
for i := 1; i < n; i++ {
for j := 1; j < m; j++ {
if D[i][j] == 1 && D[i][m] == 1 && D[n][j] == 1 {
adj[i] = append(adj[i], j)
}
}
}
match := make([]int, m)
for j := 1; j < m; j++ {
match[j] = -1
}
maxMatch := 0
vis := make([]bool, m)
var dfs func(int) bool
dfs = func(u int) bool {
for _, v := range adj[u] {
if vis[v] {
continue
}
vis[v] = true
if match[v] == -1 || dfs(match[v]) {
match[v] = u
return true
}
}
return false
}
for i := 1; i < n; i++ {
for j := 1; j < m; j++ {
vis[j] = false
}
if dfs(i) {
maxMatch++
}
}
ans := totalOnes - maxMatch
if D[n][m] == 1 {
ans--
}
if (D[n][m] ^ (maxMatch % 2)) == 1 {
ans++
}
fmt.Println(ans)
}
```