Problem: For a given array $a_1, a_2, a_3, ... , a_N$ of $N$ elements and an integer $K$, find the smallest sub-array size (smallest window length) where the elements in the sub-array contains all integers in range [$1, 2, ..., K$]. If there is no such sub-array, report 0.

Constraints

* $1 \leq N \leq 10^5$
* $1 \leq K \leq 10^5$
* $1 \leq a_i \leq 10^5$

Input

The input is given in the following format.

$N$ $K$
$a_1$ $a_2$ ... $a_N$

Output

Print the smallest sub-array size in a line.

Examples

Input

6 2
4 1 2 1 3 5


Output

2


Input

6 3
4 1 2 1 3 5


Output

3


Input

3 4
1 2 3


Output

0

Solution (in CPP):

Solution:
#include <iostream>
#include <vector>

int main() {
  uint32_t N = 0, K = 0;
  std::cin >> N >> K;
  std::vector<uint32_t> A(N);
  for (auto &&a : A) std::cin >> a;

  size_t min_len = -1, K_count = 0;
  std::vector<uint32_t> count(K + 1, 0);
  for (size_t start = 0, end = 0; start < N; start++) {
    while (end < N && K_count < K) {
      if (A[end] <= K && count[A[end]]++ == 0) K_count++;
      end++;
    }
    if (K_count < K) break;
    min_len = std::min(min_len, end - start);
    if (A[start] <= K && --count[A[start]] == 0) K_count--;
  }

  std::cout << (min_len > N ? 0 : min_len) << std::endl;

  return 0;
}