#include<iostream>
using namespace std;

//比较两个数的大小,返回较大的数
int max(int a,int b)
{
    if(a >= b)
        return a;
    else
        return b;
}

int main(){
	
	int a[101];//用于存放学生身高
	int dpa[101];//用于存放学生数从0到n,的最长递增子序列
	int dpb[101];//用于存放学生数从n到0,的最长递增子序列 
	int n;//n各学生 
	cin>>n;

	for(int i=0;i<n;i++){
		cin>>a[i];
	}
		
	//初始化dpa dpb
	for(int i=0;i<n;i++){
		dpa[i]=1;
		dpb[i]=1;
	} 
	
	//从左边开始,求以第i个人为终点的,最长升序子序列长度 
	for(int i=1;i<n;i++){
		//遍历i以前的数 
		for(int j=0;j<i;j++){
			//一旦 第i个人的身高比第j个人的身高高 
			if(a[i]>a[j]){
				// dpa[j]:代表到第j个人的最长升序子序列,+1 代表再加上第i个人 
				dpa[i] = max(dpa[j]+1,dpa[i]);  
			}
		}
	}
	
	//从右边开始,求以第i个人为终点的,最长升序子序列 
	for(int i=n - 1;i>=0;i--){  
        for(int j=n-1; j>i;j--){  
            if(a[i]>a[j])  
                dpb[i]=max(dpb[j]+1,dpb[i]);  
        }  
    }  
    
    int Max=0;
    //求左边+右边 值最大的队列 则为 最长的合唱队型 人数 
    for(int i=0;i<n;i++){
    	Max=max(Max,dpa[i]+dpb[i]-1);	
	}
    
    cout<<n-Max<<endl;
}

/**************************************************************
	Problem: 1277
	User: admin
	Language: C++
	Result: Accepted
	Time:40 ms
	Memory:2072 kb
****************************************************************/