```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var t int
fmt.Fscan(in, &t)
for ; t > 0; t-- {
var n int
var s string
fmt.Fscan(in, &n)
fmt.Fscan(in, &s)
allSame := true
for i := 1; i < n; i++ {
if s[i] != s[0] {
allSame = false
break
}
}
if allSame {
fmt.Fprintln(out, (n+2)/3)
continue
}
start := 0
for i := 0; i < n; i++ {
if s[i] != s[(i+1)%n] {
start = (i + 1) % n
break
}
}
ans := 0
run := 1
for j := 1; j < n; j++ {
prev := (start + j - 1) % n
curr := (start + j) % n
if s[curr] == s[prev] {
run++
} else {
ans += run / 3
run = 1
}
}
ans += run / 3
fmt.Fprintln(out, ans)
}
}
```