#joi2019hoc. [joi2019ho_c]たのしいたのしいたのしい家庭菜園 (Growing Vegetables is Fun 3)
[joi2019ho_c]たのしいたのしいたのしい家庭菜園 (Growing Vegetables is Fun 3)
JOI的家庭菜园问题
JOI先生在自家花园里种了一种新的植物叫做JOI草,他运用了多年的家庭菜园经验。花园里有N个种植盆,按照从西到东的方向依次编号为1到N。JOI草一共有N株,每个种植盆中都种植了一株。
春天来临时,JOI先生去看望JOI草,发现JOI草的叶子颜色五彩斑斓,与他的预期不同。此外,JOI先生还注意到JOI草的生长情况并不如他所想象的那样好。JOI先生对这些事情感到困惑,并查阅了一本书得知以下情况:
- JOI草有3种,分别有红、绿、黄三种叶子颜色。
- 如果放在一起颜色相同的JOI草会相互抑制生长。
因此,JOI先生决定重新排列JOI草,使得具有相同颜色的JOI草不相邻。这时,JOI先生只能通过交换相邻两株JOI草来操作。也就是说,在一次操作中,JOI先生可以任意选择一个编号为i(1 ≤ i ≤ N-1)的种植盆,交换种植盆i中的JOI草和种植盆i+1中的JOI草。JOI先生希望在尽可能少的操作次数内,使得具有相同颜色的JOI草不相邻。
请编写一个程序,给定JOI草的数量和每株JOI草的叶子颜色,求出为了使得具有相同颜色的JOI草不相邻而需要进行的最小操作次数。
输入
输入从标准输入中给出。输入的格式如下:
N S
其中,N表示JOI草的数量,S是一个长度为N的字符串,第i个字符(1 ≤ i ≤ N)表示种植盆i中JOI草的叶子颜色,如果是红色则表示R
,绿色表示G
,黄色表示Y
。
输出
将结果输出到标准输出。输出一行,表示为了使得具有相同颜色的JOI草不相邻而需要进行的最小操作次数。如果无法实现,则输出-1
。
限制
- S是长度为N的字符串
- S中的每个字符是
R
、G
、Y
其中之一。
示例1
输入
5
RRGYY
输出
2
在这个示例中,我们可以进行如下操作来使得具有相同颜色的JOI草不相邻:
- 首先,交换种植盆3和种植盆4中的JOI草。
- 然后,交换种植盆2和种植盆3中的JOI草。
这样,JOI草的排列变为RYRGY
。由于无法在1次或更少的操作中使得具有相同颜色的JOI草不相邻,所以输出为2。
示例2
输入
6
RRRRRG
输出
-1
在这个示例中,无论如何操作,都无法使得具有相同颜色的JOI草不相邻,所以输出为-1。
示例3
输入
20
YYGYYYGGGGRGYYGRGRYG
输出
8