//本方法是暴力求解,中间用到了桶排序的思想

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;

}