/*
TASK:psort
LANG:C++
*/

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

using namespace std;

#define IN "psort.in"
#define OUT "psort.out"

int N,t;
vector <int> v;

int output (vector<int> g) {
    for (unsigned i=0; i<g.size(); i++) {
        printf("%d ",g[i]);
    }
    printf("\n");
    return 0;
}

int main () {
//    freopen(IN,"r",stdin);
//    freopen(OUT,"w",stdout);

    scanf("%d",&N);
    
    for (int i=1; i<=N; i++) {
        scanf("%d",&t);
        vector<int>::iterator it = lower_bound(v.begin(),v.end(),t);
        if (it == v.end()) v.push_back(t);
        else (* it) = t;
    }
    printf("%d\n",N-v.size());
    return 0;
}

