```go
package main
import "fmt"
func main() {
var t int
fmt.Scan(&t)
for i := 0; i < t; i++ {
board := make([]string, 8)
for j := 0; j < 8; j++ {
fmt.Scan(&board[j])
}
var kr, kc [2]int
k := 0
for r := 0; r < 8; r++ {
for c := 0; c < 8; c++ {
if board[r][c] == 'K' {
kr[k], kc[k] = r, c
k++
}
}
}
dist0 := bfs(kr[0], kc[0])
dist1 := bfs(kr[1], kc[1])
canMeet := false
for r := 0; r < 8 && !canMeet; r++ {
for c := 0; c < 8 && !canMeet; c++ {
if board[r][c] != '#' && dist0[r][c] >= 0 && dist1[r][c] >= 0 && dist0[r][c]%2 == dist1[r][c]%2 {
canMeet = true
}
}
}
if canMeet {
fmt.Println("YES")
} else {
fmt.Println("NO")
}
}
}
func bfs(sr, sc int) [][]int {
dist := make([][]int, 8)
for i := range dist {
dist[i] = make([]int, 8)
for j := range dist[i] {
dist[i][j] = -1
}
}
queue := [][2]int{{sr, sc}}
dist[sr][sc] = 0
dr := []int{-2, -2, 2, 2}
dc := []int{-2, 2, -2, 2}
for len(queue) > 0 {
r, c := queue[0][0], queue[0][1]
queue = queue[1:]
for i := 0; i < 4; i++ {
nr, nc := r+dr[i], c+dc[i]
if nr >= 0 && nr < 8 && nc >= 0 && nc < 8 && dist[nr][nc] == -1 {
dist[nr][nc] = dist[r][c] + 1
queue = append(queue, [2]int{nr, nc})
}
}
}
return dist
}
```