← Home
```go
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	var t int
	fmt.Fscan(reader, &t)
	for i := 0; i < t; i++ {
		var n, m int
		fmt.Fscan(reader, &n, &m)
		grid := make([]string, n)
		totalOnes := 0
		for j := 0; j < n; j++ {
			fmt.Fscan(reader, &grid[j])
			for _, char := range grid[j] {
				if char == '1' {
					totalOnes++
				}
			}
		}

		minK := 4
		for r := 0; r < n-1; r++ {
			for c := 0; c < m-1; c++ {
				currentK := 0
				if grid[r][c] == '1' {
					currentK++
				}
				if grid[r+1][c] == '1' {
					currentK++
				}
				if grid[r][c+1] == '1' {
					currentK++
				}
				if grid[r+1][c+1] == '1' {
					currentK++
				}
				if currentK < minK {
					minK = currentK
				}
			}
		}

		if totalOnes == 0 {
			fmt.Println(0)
		} else if minK <= 2 {
			fmt.Println(totalOnes)
		} else if minK == 3 {
			fmt.Println(totalOnes - 1)
		} else {
			fmt.Println(totalOnes - 2)
		}
	}
}
```