No.31 ロシアの旗 (Russian Flag)


時間制限:$2.0sec$ / メモリ制限:$256MB$

問題文

K 理事長はロシアで開催される IOI 2016 に合わせて旗を作ることにした.K 理事長はまず倉庫から古い旗を取り出してきた.この旗は N 行 M 列のマス目に分けられていて,それぞれのマスには白青赤のいずれかの色が塗られている.

K 理事長はこの旗のいくつかのマスを塗り替えてロシアの旗にしようとしている.ただし,この問題でいうロシアの旗とは以下のようなものである.

  • 上から何行か (1 行以上) のマスが全て白で塗られている.
  • 続く何行か (1 行以上) のマスが全て青で塗られている.
  • それ以外の行 (1 行以上) のマスが全て赤で塗られている.

K 理事長が古い旗をロシアの旗にするために塗り替える必要のあるマスの個数の最小値を求めよ.

入力

入力は 1 + N 行からなる.

1 行目には,2 つの整数 N, M (3 ≦ N ≦ 50, 3 ≦ M ≦ 50) が空白を区切りとして書かれている.これは,旗が N 行 M 列のマス目に区切られていることを表す.

続く N 行にはそれぞれ M 文字からなる文字列が書かれており,古い旗のマス目に塗られている色の情報を表す.N 行のうちの i 行目の j 文字目 (1 ≦ i ≦ N, 1 ≦ j ≦ M) は,古い旗のマス目の i 行目 j 列目のマスの色を表す 'W', 'B', 'R' のいずれかの文字である. 'W' は白,'B' は青,'R' は赤を表す.

出力

K 理事長が古い旗をロシアの旗にするために塗り替える必要のあるマスの個数の最小値を 1 行で出力せよ.

入出力例

入力1

4 5
WRWRW
BWRWB
WRWRW
RWBWR

出力1

11

入出力例 1 において,古い旗には下図のように色が塗られている.

ほげ

下図において,'X' の書かれた 11 個のマスを塗り替える.

ほげ

これにより下図のようなロシアの旗にすることができる.

ほげ

11 個未満のマスを塗り替えることではロシアの旗にすることはできないため,11 を出力する.

入力2

6 14
WWWWWWWWWWWWWW
WBBBWWRRWWBBBW
WWBWWRRRRWWBWW
BWBWWRRRRWWBWW
WBBWWWRRWWBBBW
WWWWWWWWWWWWWW

出力2

44

入出力例 2 においては,古い旗には下図のように色が塗られている. ほげ





解説


考えうるロシア旗すべてに対し,塗り替える必要のあるマスの個数を求め,それらの最小値を出力すれば良い.

上から x 行を白,続く y 行を青にするとき,赤にする行数は N-x-y となる.x, y, N-x-y が全て 1 以上となるような x, y の組をすべて試せば,考えうるロシア旗すべてを列挙することができる.

目的のロシア旗にするために塗り替えるマスの個数は,「元の色」と「目的のロシア旗での色」が異なるマスの個数を数えれば良い.

計算量は $O(N^3M)$ となる.