#include<bits/stdc++.h>
using namespace std;
int k,n;
int x[105];
int r;//r表示用了几台机器
int sum;//sum表示清洗次数
map<int,int>w;//w[i]表示每一台机器对应的水果
map<int,int>::iterator iter;
map<int,int>W;//W[i]表示i这种水果是否有机器在榨
int main(){
cin>>k>>n;
for(int i=1;i<=n;i++){
cin>>x[i];
}
for(int i=1;i<=n;i++){
if(W[x[i]]==0){
if(r<k){//还有多余的榨汁机
r++;
w[r]=x[i];
W[x[i]]=1;
}else{//需要选择一个来清洗
//遍历每一台机器,找到最靠后的果汁对应的榨汁机,清洗它
int u=0;//u:最晚果汁在x中的位置
int Z=0;//Z:最晚果汁对应的榨汁机编号
int O=0;//O:最晚果汁对应水果的编号
for(iter=w.begin();iter!=w.end();iter++){
//iter->first 目前这台机器的编号
//iter->second 目前这台机器炸的果汁的编号
int p=0;//p:目前这台机器里面炸的果汁在原数组中的最晚编号
int z=0;//z:目前这台机器的编号
int o=0;//o:目前这台机器里面炸的果汁的编号
if((iter->first)!=0){
//寻找iter->second的最晚的位置
//p表示最晚的位置
for(int j=n;j>=i+1;j--){//从j到i+1倒序遍历
if(x[j]==(iter->second)){
p=j;
z=iter->first;
o=iter->second;
break;
}
}
//特判如果没有找到
if(p==0){
Z=iter->first;
u=-1;
O=iter->second;
break;
}
if(p>u){
u=p;
Z=z;
O=o;
}
}
}
w[Z]=x[i];//将Z这台机器里面的果汁换成目前的果汁x[i]
W[x[i]]=1;//x[i]这种果汁已经在炸了
W[O]=0;//原来最晚果汁不能炸了
sum++;
}
}
}
cout<<sum;
return 0;
}