歪歪做旗帜
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

又是一年一度的 GXCPC 大赛,今年赛会上的布置任务交给了歪歪小朋友。
为了让现场看起来氛围满满,主办方委托歪歪小朋友要给他们的会场多插一点 \texttt{GXCPC} 的旗帜。做一条 \texttt{GXCPC} 的旗帜需要用到 \texttt G, \texttt X, \texttt C, \texttt P, \texttt C 这五个字母,并让它们按顺序拼接起来。
为了完成这个任务,歪歪从外面采购到了一整条长度为 n 的布料、一把剪刀和一瓶无限量胶水。
布料是长度为 n 的字符串,仅有 \texttt G, \texttt X, \texttt C, \texttt P 这四种字母构成;剪刀可以用来把布料从任意处剪开,但只能裁剪两个字母中间的位置,不能从字母当中处剪开,即 \{\texttt{GXCPC}\} 可以剪开为 \{\texttt{GX}, \texttt{CPC}\} ;胶水可以用来把两块分离的布料进行重新拼接,一定是头尾相连的拼接,可以把要拼接布料的前后顺序互换,但不能对任意一块布料进行旋转、翻转之后再进行拼接,即 \{\texttt{GX}, \texttt{CPC}\} 可以拼接得到 \{\texttt{GXCPC}\} 或者 \{\texttt{CPCGX}\}
为了满足主办方需求,歪歪需要知道她最多能利用这个布料拼接出几条 \texttt{GXCPC} 的旗帜?

输入描述:

第一行一个整数 T (1\leq T \leq 20),表示数据组数。
对于每组数据,第一行一个整数 n (1 \leq n \leq 10^4) ,表示歪歪从外采购回来的一整块布料的长度。
第二行一个长度为 n 的字符串 s ,表示歪歪从外采购回来的一整块布料。
数据保证字符串 s 仅由 \texttt G, \texttt X, \texttt C, \texttt P 这四种字母构成。

输出描述:

对于每组数据,输出一行一个整数,即歪歪最多能利用这个布料拼接出 \texttt{GXCPC} 的旗帜数。
示例1

输入

复制
2
10
GXCPCXCPCG
15
GGXXCCPPCCCGPCX

输出

复制
2
3