//本方法是暴力求解,中间用到了桶排序的思想
include <bits/stdc++.h>
using namespace std;
//题中说的是一篇文章最多1000个单词,把数组适当设大一些,可以防止越界
int vis[1010] = {0};
int m, n;
int main ()
{
int vis[1010] = {0};
int m, n;
cin >> m >> n;
int cnt = 0;
for(int i = 1; i <= n; i++)
{
int x;
cin >> x;
//桶排序的思想,如果x这个单词已经输过了,再次输入他的值不为零说明在内存中
if(vis[x] != 0)
continue;
//如果内存中没有这个单词,就需要查一次字典。
cnt++;
//m>0说明内存还有空间
if(m > 0)
{
//没存进来一个数就初始化为i;这样vis[x]的值越小说明他是先存储的。
vis[x] = i;
m--;
}
else
{
//如果内存没有空间,就需要去查找最先存的单词进行替换
int pos = 0,min = i;
for(int j = 0; j <= 1000; j++)
{
//vis[j]非常容易忘!!!! 找到最先存储的值后进行替换
if(vis[j] != 0 && vis[j] < min)
min = vis[j],pos = j;
}
vis[pos] = 0;
vis[x] = i;
}
}
cout << cnt << endl;
return 0;
}