AT_joi2016yo_c ロシアの旗 (Russian Flag)

题目描述

K 理事长为了配合在俄罗斯举办的 IOI 2016,决定制作一面旗帜。K 理事长首先从仓库里拿出了一面旧旗。这面旗被分成 $N$ 行 $M$ 列的格子,每个格子被涂成了白色、蓝色或红色中的一种颜色。 K 理事长打算通过重新涂色,将这面旧旗变成俄罗斯国旗。这里所说的俄罗斯国旗,定义如下: - 从上往下,若干行(至少 $1$ 行)的所有格子都被涂成白色。 - 接下来若干行(至少 $1$ 行)的所有格子都被涂成蓝色。 - 剩下的行(至少 $1$ 行)的所有格子都被涂成红色。 请你求出,为了将旧旗变成俄罗斯国旗,最少需要重新涂色的格子数。

输入格式

输入共 $1+N$ 行。 第 $1$ 行包含两个整数 $N, M$($3 \leq N \leq 50$,$3 \leq M \leq 50$),表示旗帜被分为 $N$ 行 $M$ 列的格子。 接下来的 $N$ 行,每行是一个长度为 $M$ 的字符串,表示旧旗每个格子的颜色信息。第 $i$ 行第 $j$ 个字符($1 \leq i \leq N$,$1 \leq j \leq M$)为 `W`、`B` 或 `R`,分别表示白色、蓝色、红色。

输出格式

输出一个整数,表示将旧旗变成俄罗斯国旗所需重新涂色的最小格子数。

说明/提示

### 样例解释 1 在输入输出样例 $1$ 中,旧旗的颜色如下图所示。 ![](https://img.atcoder.jp/joi2016yo/2016-yo-t3-fig01.png) 如下图所示,将带有 `X` 的 $11$ 个格子重新涂色。 ![](https://img.atcoder.jp/joi2016yo/2016-yo-t3-fig02.png) 这样就可以得到如下图所示的俄罗斯国旗。 ![](https://img.atcoder.jp/joi2016yo/2016-yo-t3-fig03.png) 无法通过更少于 $11$ 个格子的重新涂色得到俄罗斯国旗,因此输出 $11$。 ### 样例解释 2 在输入输出样例 $2$ 中,旧旗的颜色如下图所示。 ![](https://img.atcoder.jp/joi2016yo/2016-yo-t3-fig04.png) 由 ChatGPT 4.1 翻译