package main import ( "fmt" ) func main() { var N, k int fmt.Scan(&N) for cid := 0; cid < N; cid++ { fmt.Scan(&k) var S string fmt.Scan(&S) n := len(S) // edge[x][y] means the weight of edge: x -> y // init[x][y] means the weight of edge: init point x -> y edge, init := make([][]int, k), make([][]int, k) for i := 0; i < k; i++ { edge[i], init[i] = make([]int, k), make([]int, k) } for x := 0; x < k; x++ { for y := 0; y < k; y++ { if x != y { for o := 0; o < n; o += k { if S[o+x] != S[o+y] { edge[x][y]++ } } for o := 0; o < n-k; o += k { if S[o+x] != S[o+k+y] { init[x][y]++ } } // Note: y -> x and x -> y is NOT THE SAME INIT edge!!! } } } dp := make([][]int, 1<