|
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int num[200100],a[200100];
int min(int a,int b){return a<b?a:b;}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)==2)
{
memset(num,0,sizeof(num));
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
int _min=(1<<28);
int l=1,r=1,cnt=m;//用两个指针,分别指向头和尾
for(;r<=n;r++)//尾后移
{
if(num[a[r]]==0) num[a[r]]++,cnt--;
else num[a[r]]++;
if(cnt==0) break;
}
if(cnt) {printf("NO/n");continue;}
else _min=r-l+1;
for(;l<=n;l++)//头后移
{
if(num[a[l]]==1) num[a[l]]--,cnt++;
else num[a[l]]--;
if(cnt==0){_min=min(_min,r-(l+1)+1); continue;}
for(r++;r<=n;r++)
{
if(num[a[r]]==0) num[a[r]]++,cnt--;
else num[a[r]]++;
if(cnt==0) break;
}
if(cnt) break;
else _min=min(_min,r-(l+1)+1);
}
printf("%d/n",_min);
}
return 0;
}