```go=package main import ( "fmt" "strings" "unicode" ) func main() { s := "AcZCbaBz" fmt.Println(helper(s, 0, len(s))) } func helper(s string, l, r int) int { if l >= r { return -1 } m := make(map[string]int) for i := l; i < r; i++ { c := s[i] if _, ok := m[string(c)]; !ok { m[string(c)] = 1 } else { m[string(c)] += 1 } } for i := l; i < r; i++ { c := rune(s[i]) uS := "" if unicode.IsUpper(c) { uS = strings.ToLower(string(s[i])) } else { uS = strings.ToUpper(string(s[i])) } if _, ok := m[uS]; !ok { return max(helper(s, l, i), helper(s, i+1, r)) } } return r - l } func max(a, b int) int { if a > b { return a } return b } ```