#include<cstdio>
#include<algorithm>
#include<cstring>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fd(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
struct node{
	int l,r,v;
};
const int N=5e5+5;
int n,l,r,v,ans,tot,t,now;
int f[N],a[N],be[N],num[N];
node q[N];
bool cmp(node a,node b)
{
	return a.r<b.r;
}
int main()
{
	//freopen("data.in","r",stdin);
	scanf("%d",&n);
	fo(i,1,n){
		scanf("%d",&a[i]);
		if(!be[a[i]]){
			be[a[i]]=++tot;
			q[tot].l=i;
			q[tot].r=i;
			q[tot].v=1;
		}
		else{
			t=be[a[i]];
			q[t].l=min(q[t].l,i);
			q[t].r=max(q[t].r,i);
			q[t].v++;
		}
	}
	sort(q+1,q+tot+1,cmp);
	f[0]=0;
	now=0;
	fo(i,1,tot){
		l=q[i].l;
		r=q[i].r;
		v=q[i].v;
		fo(j,now+1,r)f[j]=f[j-1];
		now=r;
		f[r]=max(f[l-1]+v,f[r]);
	}
	fo(i,now+1,n)f[i]=f[i-1];
	ans=f[n];
	fd(i,n,1){
		num[a[i]]++;
		ans=max(ans,num[a[i]]+f[i-1]);
	}
	printf("%d\n",n-ans);
} 
