#joi2017yod. [joi2017yo_d]ぬいぐるみの整理 (Plush Toys)

[joi2017yo_d]ぬいぐるみの整理 (Plush Toys)

问题

某位JOI相关人员在玩具店工作。今天,他们需要整理一下店内的毛绒玩具区。

毛绒玩具区的货架上排列着N个毛绒玩具,从左到右依次排列。货架被分隔成了N个小格子,每个小格子放置一个毛绒玩具。这家玩具店总共销售M种类型的毛绒玩具,每种玩具都被标上了1到M的编号。排在货架上的N个毛绒玩具中,每个毛绒玩具都属于这M种类型中的一种。另外,每种类型的毛绒玩具至少有一个。

为了美观起见,他们决定将同一类型的毛绒玩具连续地放置在货架上。他们使用以下方法来对毛绒玩具进行重新排列:

  • 从N个毛绒玩具中选择若干个取下来。没有被取下的毛绒玩具位置保持不变。
  • 将取下来的毛绒玩具按照任意顺序放回货架上的空白小格子里。

重新排列后,相同类型的毛绒玩具必须全部连续地放置在货架上。请编写一个程序,计算为了完成重新排列而需要取下的毛绒玩具的最小数量。


输入

输入由1 + N行组成。

第1行包含两个整数N和M(1N100,0001 \leq N \leq 100,0001M201 \leq M \leq 20),表示毛绒玩具的数量和类型的数量。

接下来的N行中,每行包含一个整数,范围在1到M之间。第i行(1iN1 \leq i \leq N)的整数表示放置在货架上第i个小格子中的毛绒玩具的类型。对于每种类型,至少有一个毛绒玩具存在。

输出

输出为一行,表示为了重新排列而需要取下的毛绒玩具的最小数量。


输入示例 1

7 2
1
2
2
2
1
2
1

输出示例 1

2

在示例1中,初始时放置在货架上的毛绒玩具类型从左到右依次为1、2、2、2、1、2、1。为了使重新排列所需取下的毛绒玩具数量最小,可以将第1个和第6个毛绒玩具取下,并将类型为2的毛绒玩具放回第1个位置,将类型为1的毛绒玩具放回第6个位置。此时,取下的毛绒玩具数量为2。


输入示例 2

12 4
1
3
2
4
2
1
2
3
1
1
3
4

输出示例 2

7