AT_agc072_b [AGC072B] AGC Language
Description
AGC 語とは、同じ数の `A` と `C` のみからなり、どの接頭辞についても `A` が半数以上を占める $ 2 $ 文字以上の文字列を指します。 $ N $ 個の `A` と $ N $ 個の `C` からなる $ 2N $ 文字の文字列 $ S $ が与えられるので、 $ k = 1, 2, \dots, K $ について次の問いに答えてください。
> 黒板に $ S $ を $ k $ 回繰り返した文字列が書かれている。 以下の操作をその順に行うことで、黒板の文字列を AGC 語にしたい。
>
> 1. 次の操作を **1 回だけ**行う。
> - 整数 $ (l, r) $ $ (1 \leq l \leq r \leq 2kN) $ を選択し、文字列の $ l $ から $ r $ 文字目までの部分を reverse する。
> 2. 次の操作を **0 回以上**行う。
> - 文字列の隣接する 2 文字を swap する。
>
> 最小何回の swap 操作が必要であるか、計算せよ。
接頭辞とは文字列 $ Y $ が文字列 $ X $ の接頭辞であるとは、 $ 1 \leq |Y| \leq |X| $ であり、かつ $ X $ の最初の $ |Y| $ 文字が $ Y $ であることを指します。たとえば `ATC` は `ATCODER` の接頭辞ですが、`AGC` や `ATCODERGRANDCONTEST` は `ATCODER` の接頭辞ではありません。
Input Format
入力は以下の形式で標準入力から与えられます。
> $ N $ $ K $ $ S $
Output Format
答えを $ K $ 行に出力してください。 $ i $ 行目 $ (1 \leq i \leq K) $ には $ k = i $ のときの答えを出力してください。
Explanation/Hint
### Sample Explanation 1
$ k = 1 $ のとき、最初黒板に書かれた文字列は `AC` となります。
$ k = 2 $ のとき、最初黒板に書かれた文字列は `ACAC` となります。
両方とも最初から AGC 語であるため、たとえば $ (l, r) = (1, 1) $ とすると、 $ 0 $ 回の swap 操作を達成することができます。
### Sample Explanation 2
$ k = 1 $ のとき、黒板に書かれる文字列は `CACAAACCCA` となります。以下の手順で操作を行うと、swap 操作を $ 1 $ 回しか行う必要がありません。
1. $ (l, r) = (1, 4) $ を選択し、文字列の $ 1 $ から $ 4 $ 文字目を reverse する。文字列は `ACACAACCCA` となる。
2. 文字列の $ 9 $ 文字目と $ 10 $ 文字目を swap する。文字列は `ACACAACCAC` となり、これは AGC 語である。
### Constraints
- $ 1 \leq N \leq 1\,000\,000 $
- $ 1 \leq K \leq 300\,000 $
- 文字列 $ S $ は $ N $ 個の `A` と $ N $ 個の `C` からなる $ 2N $ 文字の文字列である
- $ N $ と $ K $ は整数