#include <cstring>
#include <iostream>
#include <cstdio>
#include <set>

using namespace std;

set < int > st;
int N;
int a[1 << 18];
int first[1 << 18];
int last[1 << 18];
int used[1 << 18];
int dp[1 << 18];
int MX[1 << 18];

void scan(){
    scanf ( "%d", &N );

    for ( int i = 0; i < N; ++i ){
        scanf ( "%d", a + i );
        st.insert ( a[i] );
    }
}
void solve(){
    memset ( first, -1, sizeof ( first ) );
    memset ( last, -1, sizeof ( last ) );

    for ( int i = 0; i < N; ++i ){
        last[ a[i] ] = i;
        if ( first[ a[i] ] == -1 )
            first[ a[i] ] = i;
    }

    dp[0] = ( last[ a[0] ] == 0 );
    MX[1] = dp[0];

    for ( int i = 1; i < N; ++i ){
        if ( last[ a[i] ] == i )
            dp[i] = 1 + MX[ first[ a[i] ]];

        MX[i + 1] = max ( MX[i], dp[i] );
    }

    cout << (int)st.size() - MX[N] << endl;
}

int main(){
    scan();
    solve();
}
