#include <iostream>
#include <vector>
using namespace std;
/*
解题思路:
可看成求每个数的左最长递增序列和右最长递减序列,得到每个位置的左最长递增+右最长递减,取最大值-1即为符合合唱队身高序列人数max
-1是左最长+右最长 自己的位置加了2次 用总人数n - max 即为所求
参考算法笔记中最长不下降子序列(LIS)问题,将判断条件等号去掉即为最长递增序列
求递减序列时需倒着求
*/
int main() {
int n;
while(cin >> n){
vector<int> vi(n+1,0);
for(int i = 1; i <= n; i++){
cin >> vi[i];
}
vector<int> num1(n+1,0);//左递增最长序列长度
vector<int> dp1(n+1,1);//dp1[i]表示以vi[i]结尾的最长递增子序列的长度
for(int i = 1; i <= n; i++){
for(int j = 1; j < i; j++){
if(vi[i] > vi[j] && dp1[j] + 1 > dp1[i]){//当第i位的身高高于前j位时,且缀在以A[j]结尾后比当前更长
dp1[i] = dp1[j] + 1;//子序列长度+1
}
}
num1[i] = max(num1[i],dp1[i]);
}
vector<int> num2(n+1,0);//右递减最长子序列长度
vector<int> dp2(n+1,1);//dp2[i]表示以vi[i]开头的最长递减子序列的长度
for(int i = n; i >= 1; i--){
for(int j = n; j > i; j--){
if(vi[i] > vi[j] && dp2[j] + 1 >dp2[i]){//当第i位身高高于后j位身高时,,且缀在以A[j]开头前比当前更长
dp2[i] = dp2[j] + 1;//子序列长度+1
}
}
num2[i] = max(num2[i],dp2[i]);
}
int max = 0;
for(int i = 1; i <= n; i++){
if(max < num1[i] + num2[i])
max = num1[i] + num2[i];//找出最长子序列长度和
}
cout << n - max + 1 << endl;
}
}
// 64 位输出请用 printf("%lld")