//从前向后走一遍动态规划计算严格升序序列,从后向前走一遍计算严格升序序列。
//最后再遍历一遍其两者和最大的数,然后拿总数减去就是答案。
#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;
}