#include<bits/stdc++.h>
using namespace std;
int sum,n,k,a[100005],maxn=-1;
unordered_map<int,int> vis;
struct node{
int sum,x;
bool friend operator < (node a,node b){
return a.sum>b.sum;
}
};
set<node> s;
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int l=1,r=1;
while(r<=n){
if(!vis[a[r]]){
sum++;
}else{
s.erase({vis[a[r]],a[r]});
}
vis[a[r]]++;
s.insert({vis[a[r]],a[r]});
if(sum==k+1){
maxn=max(maxn,(*s.begin()).sum);
}
if(sum>k+1){
vis[a[l]]--;
if(!vis[a[l]]){
sum--;
}
l++;
}
r++;
}
cout<<maxn;
return 0;
}