For problem statement at 1000-1999/1000-1099/1030-1039/1038/problemF.txt this is a correct solution, but verifier at 1000-1999/1000-1099/1030-1039/1038/verifierF.go ends with All tests passed can you fix the verifier? ```go
package main
import (
"fmt"
)
func multiply(A, B [][]int64) [][]int64 {
size := len(A)
C := make([][]int64, size)
for i := range C {
C[i] = make([]int64, size)
for j := 0; j < size; j++ {
var sum int64 = 0
for k := 0; k < size; k++ {
sum += A[i][k] * B[k][j]
}
C[i][j] = sum
}
}
return C
}
func power(A [][]int64, p int) [][]int64 {
size := len(A)
res := make([][]int64, size)
for i := range res {
res[i] = make([]int64, size)
res[i][i] = 1
}
base := A
for p > 0 {
if p%2 == 1 {
res = multiply(res, base)
}
base = multiply(base, base)
p /= 2
}
return res
}
func main() {
var n int
var s string
if _, err := fmt.Scan(&n, &s); err != nil {
return
}
m := len(s)
A := make([][]int64, m)
for i := range A {
A[i] = make([]int64, m)
}
for i := 0; i < m; i++ {
for c := 0; c <= 1; c++ {
char := byte('0' + c)
P := s[:i] + string(char)
nextState := 0
for k := len(P); k >= 1; k-- {
if k <= m {
if s[:k] == P[len(P)-k:] {
nextState = k
break
}
}
}
if nextState < m {
A[i][nextState]++
}
}
}
An := power(A, n)
var trace int64 = 0
for i := 0; i < m; i++ {
trace += An[i][i]
}
var total int64 = int64(1) << n
ans := total - trace
fmt.Println(ans)
}
```