#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


限制

  • 1N4001 ≤ N ≤ 400
  • S是长度为N的字符串
  • S中的每个字符是RGY其中之一。

示例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