设 $P$ 为 $x$ 轴上 $n$ 个点的集合,每个点被染成 $1, 2, \dots, k$ 中的一种颜色。对于 $k$ 种颜色中的每一种颜色 $i$,集合 $P$ 中至少有一个点被染成颜色 $i$。对于 $P$ 的一个连续子集 $P'$,如果 $P'$ 和 $P \setminus P'$ 都包含每种颜色至少一个点,则称 $P'$ 构成一个“双彩虹”(double rainbow)。请参考下图作为示例。集合 $P$ 由十个点组成,每个点被染成 $1, 2, 3, 4$ 中的一种颜色。矩形框内的五个连续点组成的集合 $P'$ 即构成一个双彩虹。
给定点集 $P$ 和颜色数量 $k$ 作为输入,编写一个程序,计算并输出构成双彩虹的 $P'$ 的最小大小。
输入格式
程序从标准输入读取数据。输入的第一行包含两个整数 $n$ 和 $k$ ($1 \le k \le n \le 10,000$),其中 $n$ 是 $P$ 中点的数量,$k$ 是颜色的数量。接下来的 $n$ 行,每行包含一个 $1$ 到 $k$ 之间的整数,第 $i$ 行对应从左往右数第 $i$ 个点的颜色。
输出格式
程序将结果写入标准输出。仅输出一行,包含构成双彩虹的 $P'$ 的最小大小。如果不存在这样的 $P'$,则输出 $0$。
样例
输入 1
10 4 1 2 3 1 1 4 2 4 3 3
输出 1
5
输入 2
6 3 1 1 2 2 3 3
输出 2
0