← Home
For problem statement at 1000-1999/1100-1199/1130-1139/1131/problemE.txt this is a correct solution, but verifier at 1000-1999/1100-1199/1130-1139/1131/verifierE.go ends with All tests passed can you fix the verifier? ```go
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Buffer(make([]byte, 1024*1024), 1024*1024)
	scanner.Split(bufio.ScanWords)

	if !scanner.Scan() {
		return
	}
	var n int
	fmt.Sscanf(scanner.Text(), "%d", &n)

	if !scanner.Scan() {
		return
	}
	p1 := scanner.Text()

	cnt := make([]int64, 26)
	for c := 0; c < 26; c++ {
		cnt[c] = int64(maxRun(p1, byte(c+'a')))
	}

	for i := 1; i < n; i++ {
		if !scanner.Scan() {
			break
		}
		t := scanner.Text()

		newCnt := make([]int64, 26)
		for c := 0; c < 26; c++ {
			ch := byte(c + 'a')
			allT := isAll(t, ch)
			cntT := int64(maxRun(t, ch))
			prefT := int64(prefixLen(t, ch))
			suffT := int64(suffixLen(t, ch))

			if allT {
				newCnt[c] = cnt[c]*(int64(len(t))+1) + int64(len(t))
			} else {
				if cnt[c] > 0 {
					val := prefT + 1 + suffT
					if cntT > val {
						newCnt[c] = cntT
					} else {
						newCnt[c] = val
					}
				} else {
					newCnt[c] = cntT
				}
			}
		}
		cnt = newCnt
	}

	var maxBeauty int64 = 0
	for c := 0; c < 26; c++ {
		if cnt[c] > maxBeauty {
			maxBeauty = cnt[c]
		}
	}

	fmt.Println(maxBeauty)
}

func maxRun(s string, ch byte) int {
	max := 0
	curr := 0
	for i := 0; i < len(s); i++ {
		if s[i] == ch {
			curr++
			if curr > max {
				max = curr
			}
		} else {
			curr = 0
		}
	}
	return max
}

func prefixLen(s string, ch byte) int {
	for i := 0; i < len(s); i++ {
		if s[i] != ch {
			return i
		}
	}
	return len(s)
}

func suffixLen(s string, ch byte) int {
	for i := len(s) - 1; i >= 0; i-- {
		if s[i] != ch {
			return len(s) - 1 - i
		}
	}
	return len(s)
}

func isAll(s string, ch byte) bool {
	return prefixLen(s, ch) == len(s)
}
```