#arc126d. [arc126_d]Pure Straight

[arc126_d]Pure Straight

题目描述

给定一个由 NN 个正整数组成的序列 A=(A1,A2,,AN)A = (A_1, A_2, \ldots, A_N),其中每个 AiA_i 的取值为 1,2,,K1, 2, \ldots, K

你可以对这个序列执行以下操作任意次数:

  • 交换两个相邻元素,即选择 iijj,使得 ij=1|i-j|=1,并交换 AiA_iAjA_j

找出使得 AA 满足以下条件所需的最小操作次数:

  • AA 包含 (1,2,,K)(1, 2, \ldots, K) 作为连续子序列,即存在一个不超过 NK+1N-K+1 的正整数 nn,满足 An=1A_n = 1An+1=2A_{n+1} = 2\ldotsAn+K1=KA_{n+K-1} = K

约束条件

  • 2K162 \leq K \leq 16
  • KN200K \leq N \leq 200
  • AiA_i 的取值为 1,2,,K1, 2, \ldots, K
  • AA 中至少包含 1,2,,K1, 2, \ldots, K 中的每个数

输入

从标准输入中按以下格式获得输入:

NN KK A1A_1 A2A_2 \ldots ANA_N

输出

打印使得 AA 满足条件所需的最小操作次数。

示例输入 1

4 3
3 1 2 1

示例输出 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 = 1A2=2A_2 = 2A3=3A_3 = 3,满足条件。

示例输入 2

5 5
4 1 5 2 3

示例输出 2

5

示例输入 3

8 4
4 2 3 2 4 2 1 4

示例输出 3

5