#include<cstdio>
#include<algorithm>
#include<unordered_map>
const int maxn = 2000000;
using namespace std;

int main()
{
	int n, k;
	static int p[maxn];
	int cnt = 0, left = 0;
	unordered_map<int, int> ump;
	int ans = 1;
	
	scanf("%d%d", &n, &k);
	for (int i = 0; i < n; ++i)
	{
		scanf("%d", &p[i]);
		if (++ump[p[i]] == 1)
		{
			++cnt;
		}
		while (cnt > k)
		{
			unordered_map<int, int>::iterator it = ump.find(p[left]);
			if (--it->second == 0)
			{
				ump.erase(it);
				--cnt;
			}
			++left;
		}
		ans = max(ans, i - left + 1);
	}
	printf("%d\n", ans);
	return 0;
}
