//从前向后走一遍动态规划计算严格升序序列,从后向前走一遍计算严格升序序列。
//最后再遍历一遍其两者和最大的数,然后拿总数减去就是答案。
#include <bits/stdc++.h>

using namespace std;
const int maxn = 100+10;
int N;
int a[maxn];
int dp_zuo[maxn];
int dp_you[maxn];

int main() {
    cin>>N;
    for (int i=1;i<=N;i++) {
        cin>>a[i];
    }
    for (int i=1;i<=N;i++) {
        dp_zuo[i] = 1;
        for (int j=1;j<i;j++) {
            if (a[i]>a[j]) {
                dp_zuo[i] = max(dp_zuo[i], dp_zuo[j]+1);
            }
        }
    }
    for (int i=N;i>=1;i--) {
        dp_you[i] = 1;
        for (int j=i+1;j<=N;j++) {
            if (a[i]>a[j]) {
                dp_you[i] = max(dp_you[i], dp_you[j]+1);
            }
        }
    }
    int max_people = 0;
    for (int i=1;i<=N;i++) {
        max_people = max(max_people, dp_zuo[i]+dp_you[i]-1);
    }
    cout<<N-max_people;
    return 0;
}