atcoder#ARC126D. [ARC126D] Pure Straight

[ARC126D] Pure Straight

配点 : 600600

問題文

NN 項からなる正整数列 A=(A1,A2,,AN)A = (A_1, A_2, \ldots, A_N) が与えられます。各 AiA_i1,2,,K1, 2, \ldots, K のいずれかです。

あなたはこの数列に対して、次の操作を何度でも行うことができます:

  • 隣接する 22 項を入れ替える。つまり、ij=1|i-j|=1 となる i,ji, j を選び、AiA_iAjA_j を入れ替える。

数列 AA が以下の条件を満たすようにするために必要な操作回数の最小値を求めてください。

  • 数列 AA は、連続部分列として (1,2,,K)(1, 2, \ldots, K) を含む。 つまり、An=1A_n = 1, An+1=2A_{n+1} = 2, \ldots, An+K1=KA_{n+K-1} = K が成り立つような NK+1N-K+1 以下の正整数 nn が存在する。

制約

  • 2K162\leq K\leq 16
  • KN200K \leq N\leq 200
  • AiA_i1,2,,K1, 2, \ldots, K のいずれかに等しい
  • 数列 AA は、1,2,,K1, 2, \ldots, K のそれぞれを少なくともひとつ含む

入力

入力は以下の形式で標準入力から与えられます。

NN KK

A1A_1 A2A_2 \ldots ANA_N

出力

数列 AA が条件を満たすようにするために必要な操作回数の最小値を出力してください。

4 3
3 1 2 1
2

例えば次のように操作を行うのが最適です。

  • A1A_1A2A_2 を入れ替える。AA(1,3,2,1)(1,3,2,1) へ変化する。
  • A2A_2A3A_3 を入れ替える。AA(1,2,3,1)(1,2,3,1) へ変化する。
  • A1=1A_1 = 1, A2=2A_2 = 2, A3=3A_3 = 3 が成り立ち、条件を満たす。
5 5
4 1 5 2 3
5
8 4
4 2 3 2 4 2 1 4
5