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 <bits/stdc++.h>
using namespace std;
using ll = long long;

const int INF = 1e9;

int main() {
  ll N, K; cin >> N >> K;
  ll M = K * (K + 1) / 2;
  ll sum = 0;
  deque<int> deq;
  int ans = INF;
  map<int, int> mp;

  for (int i = 0; i < N; ++i) {
    int a; cin >> a;
    if (a > K) a = 0;
    deq.push_back(a);
    if (mp[a] == 0) sum += a;
    ++mp[a];
    while (sum >= M) {
      if (sum == M) ans = min(ans, static_cast<int>(deq.size()));
      int b = deq.front();
      if (mp[b] == 1 && sum - b < M) break;
      deq.pop_front();
      if (mp[b] == 1) sum -= b;
      --mp[b];
    }
  }
  cout << ( (ans == INF) ? 0 : ans ) << endl;
  return 0;
}