For problem statement at 1000-1999/1600-1699/1620-1629/1620/problemG.txt this is a correct solution, but verifier at 1000-1999/1600-1699/1620-1629/1620/verifierG.go ends with All 100 tests passed can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
var (
n int
counts [23][26]int32
g []uint32
)
func dfs(u int, mask int, minCounts [26]int32, sign int) {
if u == n {
if mask == 0 {
g[0] = 0
return
}
prod := int64(1)
for i := 0; i < 26; i++ {
prod = (prod * int64(minCounts[i]+1)) % 998244353
}
if sign == -1 {
prod = 998244353 - prod
if prod == 998244353 {
prod = 0
}
}
g[mask] = uint32(prod)
return
}
dfs(u+1, mask, minCounts, sign)
for i := 0; i < 26; i++ {
if counts[u][i] < minCounts[i] {
minCounts[i] = counts[u][i]
}
}
dfs(u+1, mask|(1<<u), minCounts, -sign)
}
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
buf := make([]byte, 2000000)
scanner.Buffer(buf, 2000000)
if !scanner.Scan() {
return
}
nStr := scanner.Text()
n = 0
for i := 0; i < len(nStr); i++ {
n = n*10 + int(nStr[i]-'0')
}
for i := 0; i < n; i++ {
scanner.Scan()
s := scanner.Text()
for j := 0; j < len(s); j++ {
counts[i][s[j]-'a']++
}
}
g = make([]uint32, 1<<n)
var initCounts [26]int32
for i := 0; i < 26; i++ {
initCounts[i] = 1e9
}
dfs(0, 0, initCounts, -1)
for i := 0; i < n; i++ {
bit := 1 << i
for mask := 0; mask < (1 << n); mask += (bit << 1) {
for j := 0; j < bit; j++ {
g[mask|bit|j] += g[mask|j]
if g[mask|bit|j] >= 998244353 {
g[mask|bit|j] -= 998244353
}
}
}
}
k := make([]uint8, 1<<n)
sum := make([]uint16, 1<<n)
for i := 0; i < n; i++ {
bit := 1 << i
for mask := 0; mask < bit; mask++ {
k[mask|bit] = k[mask] + 1
sum[mask|bit] = sum[mask] + uint16(i+1)
}
}
var ans uint64 = 0
for mask := 1; mask < (1<<n); mask++ {
val := uint64(g[mask]) * uint64(k[mask]) * uint64(sum[mask])
ans ^= val
}
fmt.Println(ans)
}
```