問題
JOI君は,長年にわたる家庭菜園の経験を生かして,自宅の庭で新たにジョイ草という植物を育てている.庭には東西方向に並んだ $N$ 個のプランターがあり,西側に順に $1$ から $N$ までの番号がついている.ジョイ草は全部で $N$ 株あり,それぞれのプランターに $1$ 株ずつ植えてある.
春になって様子を見に行ったJOI君は,ジョイ草が予想に反して色とりどりの葉を付けていることに気がついた.さらに,ジョイ草が思ったほど生育していないことに気がついた.JOI君はこれらのことを不思議に思い,本で調べたところ,次のことがわかった:
- ジョイ草には $3$ 種類あり,それぞれ赤,緑,黄の葉を付ける.
- 葉の色が同じジョイ草を近くに置くと,その成長が阻害されてしまう.
ジョイ草の数と,それぞれのジョイ草の葉の色が与えられたとき,葉の色が同じジョイ草が隣り合わないように並び替えるために必要な操作回数の最小値を求めるプログラムを作成せよ.
入力
入力は以下の形式で標準入力から与えられる.
$N$ $S$
$S$ は 長さ $N$ の文字列で,その $i$ 文字目($1$ ≦ $i$ ≦ $N$)は,プランター $i$ に植えてあるジョイ草が赤ならば R,緑ならば G,黄ならば Y である.
出力
標準出力に,必要な操作回数の最小値を $1$ 行で出力せよ.ただし,葉の色が同じジョイ草が隣り合わないように並び替えることが不可能ならば,代わりに $-1$ を出力せよ.
制約
- $1$ ≦ $N$ ≦ $400$.
- $S$ は長さ $N$ の文字列である.
- $S$ の各文字は R, G, Y のいずれかである.
小課題
- (5 点) $N$ ≦ $15$.
- (55 点) $N$ ≦ $60$.
- (15 点) $S$ の各文字は R, G のいずれかである.
- (25 点) 追加の制約はない.
入出力例
入力例 1
5 RRGYY
出力例 1
2
この入力例では,例えば次のようにすると,葉の色が同じジョイ草が隣り合わないようにすることができる.
- まず,プランター $3$ のジョイ草とプランター $4$ のジョイ草を入れ替える.
- 次に,プランター $2$ のジョイ草とプランター $3$ のジョイ草を入れ替える.
入力例 2
6 RRRRRG
出力例 2
-1
この入力例では,どのように操作をしても,葉の色が同じジョイ草が隣り合わないようにすることはできない.
入力例 3
20 YYGYYYGGGGRGYYGRGRYG
出力例 3
8