#295. 管道取珠
管道取珠
题目描述
管道取珠是小 X 很喜欢的一款游戏。在本题中,我们将考虑该游戏的一个简单改版。游戏画面如图 1 所示:

游戏初始时,左侧管道有一定数量的小球(有红、黄、绿三种颜色),而右侧输出管道为空。每一次操作,游戏者可以任意选择右侧的某一个输出管道,将左侧管道中最右端的一个球推入到右侧所选择的输出管道中。
例如:对于图 1 中的情形,我们将左侧管道中最右端的一个球推入到右侧的上输出管道中,将得到图 2 所示的情况。

对于右侧每一个输出管道,当每一次有球到达时,相应管道便会向外喷吐若干个游戏币。喷吐游戏币的个数是如下计算的:刚刚有球到达的输出管道对比最近到达的三个球(包含刚刚到达的这个球。如果该管道一共到达的球不足三个,则全部进行对比。假设要对比的球的个数为 x 个,则 x=min(3,该输出管道中的球的个数) ),这 x 个球包含几种颜色,该管道就会喷吐出几个游戏币。即:如果这 x 个球颜色均相同,则该管道会喷吐出 1 个游戏币;如果这 x 个球包含两种颜色,则该管道会喷吐出 2 个游戏币;如果这 x 个球包含三种颜色,则该管道会喷吐出 3 个游戏币。
爱好数学的小 X 知道,不同的操作方式,可能会使得管道喷吐出的游戏币个数不同。他想知道,如何操作,可以使得两个输出管道喷吐出的游戏币总数量最多?
你能帮助他计算这个值么?
输入格式
输入文件中的第一行为一个整数 ,表示初始时左侧管道中球的数目。
第二行为一个长度为 的字符串,表示初始时左侧管道中从左到右球的颜色,仅包含 R, Y, G 三种字符。其中:R 表示红色球,Y 表示黄色球,G 表示绿色球。
输出格式
输出一个整数,即为结果。
输入样例
6
GYYRGR
输出样例
12
样例解释
假设右侧上管道为 UP,下管道为 DOWN,则可以如下分配球:
R 进管道 UP,喷吐出 1 个游戏币
G 进管道 UP,喷吐出 2 个游戏币
R 进管道 DOWN,喷吐出 1 个游戏币
Y 进管道 DOWN,喷吐出 2 个游戏币
Y 进管道 UP,喷吐出 3 个游戏币
G 进管道 DOWN,喷吐出 3 个游戏币
总和为 12.
数据范围
1 ≤ N ≤ 100 000