{% tabs %} {% tab title="Go" %}
package main
import (
"fmt"
)
func get(c rune) (int){
// fmt.Println(c,c == 'b')
if c == 'b' {
return 1
}
return 2
}
func max(a, b int) (int){
if a > b {
return a
}
return b
}
func main(){
var N, ans int
var S string
fmt.Scanf("%d\n%s",&N,&S)
S += S
var s = []rune(S)
for i:= 0; i < N; i++ {
l := i
r := i + N - 1
var cnt,left, right int
for l <= r && (s[l] == 'w' || left|get(s[l]) != 3){
if s[l] !='w'{
left |= get(s[l])
}
l ++
cnt ++
}
for l <= r && (s[r] == 'w' || right|get(s[r]) != 3){
if s[r] != 'w' {
right |= get(s[r])
}
r --
cnt ++
}
ans = max(cnt, ans)
// fmt.Println(l, r, cnt)
}
fmt.Println(ans)
}
{% endtab %}
{% tab title="Python" %}
def get(c):
if c == "b":
return 1
return 2
N= int(input())
s = [x for x in input()]
s += s
ans = 0
for i in range(N):
l = i
r = i + N - 1
cnt = left = right = 0
while l <= r and (s[l] == "w" or left|get(s[l]) != 3):
if s[l] != "w" :
left |= get(s[l])
cnt += 1
l += 1
while l <= r and (s[r] == "w" or right|get(s[r]) != 3):
if s[r] != "w" :
right |= get(s[r])
cnt += 1
r -= 1
ans = max(ans, cnt)
print(ans)
{% endtab %} {% endtabs %}