Universal Tropical Plant Center (UTPC) 拥有一片种植园,其中 $N$ 棵树从西向东排成一条直线,从西向东依次编号为 $1$ 到 $N$。
种植园即将进入一个为期 $K$ 天的收获期。在此期间,每棵树每天会开出一朵花,颜色为红、绿、蓝三种颜色之一。第 $i$ 棵树在 $K$ 天内的开花计划由字符串 $S_i$ 表示,其中第 $j$ 个字符 $S_{i,j}$ 表示第 $j$ 天开出的花朵颜色:'R' 代表红色,'G' 代表绿色,'B' 代表蓝色。
每天,所有已开出的花朵都会被采摘并分组为每组三朵的花束。一个有效的花束必须由三朵颜色相同的花,或者三朵颜色各不相同的花组成。理想情况下,采摘的花朵应该在没有剩余的情况下被分组成这样的花束。然而,这并不总是能够实现。
为了解决这个问题,UTPC 允许在收获期开始前对树木进行以下操作。每种操作可以执行任意次数,但每棵树最多只能被操作一次:
- 选择一个整数 $i$ ($1 \le i \le N$) 并砍掉第 $i$ 棵树。这棵树将不会有花朵被采摘。
- 选择一个整数 $i$ ($1 \le i \le N$) 并对第 $i$ 棵树使用生长加速剂。在该收获期内,这棵树每天会开出两朵花,颜色均为 $S_{i,j}$ 所指示的颜色。
收获期开始后不能再进行操作。
由于 UTPC 的办公室位于种植园的西侧,他们倾向于不对更靠东的树木进行操作。因此,一组操作的代价定义为被操作的树木中,最靠东的那棵树的编号。如果没有树木被操作,则代价为 $0$。
请确定确保在收获期的每一天,所有花朵都能在没有剩余的情况下被分组成有效花束所需的最小代价。注意,如果所有树木都被砍掉,则视为没有剩余花朵。
输入格式
输入格式如下:
$N \ K$ $S_1$ $S_2$ $\vdots$ $S_N$
- $N$ 和 $K$ 为整数。
- $1 \le N, K$。
- $NK \le 10^5$。
- $|S_i| = K$。
- $S_i$ 中的每个字符均为 'R'、'G' 或 'B'。
输出格式
输出一个整数,表示确保在收获期的每一天都没有花朵剩余所需的最小代价。
样例
样例输入 1
4 5 RGBGR BGGBR RBGBR RRRRR
样例输出 1
2
样例输入 2
3 3 RGB BGG GGR
样例输出 2
0
样例输入 3
3 4 GGGG BGGG GGGR
样例输出 3
3
样例输入 4
6 4 BGGB BGGB RGBG RRRR GGGG BBBB
样例输出 4
3
说明
在第一个样例中,通过砍掉第二棵树,每天开出的花朵为:
- 第 1 天:RRR
- 第 2 天:GBR
- 第 3 天:BGR
- 第 4 天:GBR
- 第 5 天:RRR
每天的花朵都可以被分组成有效的花束且没有剩余。代价为 $2$,且无法以代价 $1$ 实现该目标。
在第二个样例中,不需要进行任何操作,因此代价为 $0$。
在第三个样例中,必须砍掉所有树木才能满足条件。代价为 $3$。
在第四个样例中,通过对第 $1$ 棵树使用生长加速剂并砍掉第 $3$ 棵树,每天开出的花朵变为:
- 第 1 天:BBBRGB
- 第 2 天:GGGRGB
- 第 3 天:GGGRGB
- 第 4 天:BBBRGB
这些花朵每天都可以被分组成有效的花束。代价为 $3$。