#include <iostream>
#include <stdio.h>
#include <vector>

#define pb push_back

using namespace std;

const int MAXN = 100100;

int n, a[MAXN];
vector<int> vec;
bool inVec[MAXN];
vector<int> pos[MAXN];
int sz, idxList[MAXN], mn[MAXN];
int ans;

void read() {
    scanf("%d", &n);
    for(int i = 0; i < n; i ++) {
        scanf("%d", &a[i]);
        if(!inVec[ a[i] ]) {
            vec.pb(a[i]);
            inVec[ a[i] ] = true;
        }
        pos[ a[i] ].pb(i);
    }
}

void solve() {
    for(int i = 0; i < vec.size(); i ++) {
        for(int j = 0; j < pos[ vec[i] ].size(); j ++)
            idxList[sz ++] = pos[ vec[i] ][j];
    }

    mn[n - 1] = idxList[n - 1];
    for(int i = n - 2; i >= 0; i --)
        mn[i] = min(mn[i + 1], idxList[i]);

    for(int i = 0; i < n - 1; i ++)
        if(a[ idxList[i] ] != a[ idxList[i + 1] ] && mn[i + 1] < idxList[i])
            ans ++;

    cout << ans << endl;
}

int main()
{
    read();
    solve();

    return 0;
}
