← Home
For problem statement at 0-999/400-499/480-489/482/problemC.txt this is a correct solution, but verifier at 0-999/400-499/480-489/482/verifierC.go ends with All tests passed can you fix the verifier? ```go
package main

import (
	"fmt"
	"math/bits"
)

func main() {
	var n int
	if _, err := fmt.Scan(&n); err != nil {
		return
	}
	strings := make([]string, n)
	for i := 0; i < n; i++ {
		fmt.Scan(&strings[i])
	}

	if n == 1 {
		fmt.Printf("%.15f\n", 0.0)
		return
	}

	m := len(strings[0])

	V := make([]uint64, 1<<m)

	for i := 0; i < n; i++ {
		for j := i + 1; j < n; j++ {
			eq := 0
			for k := 0; k < m; k++ {
				if strings[i][k] == strings[j][k] {
					eq |= (1 << k)
				}
			}
			V[eq] |= (uint64(1) << i) | (uint64(1) << j)
		}
	}

	for i := 0; i < m; i++ {
		for mask := (1 << m) - 1; mask >= 0; mask-- {
			if (mask & (1 << i)) != 0 {
				V[mask^(1<<i)] |= V[mask]
			}
		}
	}

	C := make([][]float64, m+1)
	for i := 0; i <= m; i++ {
		C[i] = make([]float64, m+1)
		C[i][0] = 1
		for j := 1; j <= i; j++ {
			C[i][j] = C[i-1][j-1] + C[i-1][j]
		}
	}

	sumBadCount := make([]int, m+1)
	for mask := 0; mask < (1<<m); mask++ {
		k := bits.OnesCount32(uint32(mask))
		sumBadCount[k] += bits.OnesCount64(V[mask])
	}

	ans := 0.0
	for k := 0; k <= m; k++ {
		ans += float64(sumBadCount[k]) / (float64(n) * C[m][k])
	}

	fmt.Printf("%.15f\n", ans)
}
```