/* 題意知道N個人身高 h[1..n]; 要求是的形成一個 h[1]<h[2]<...<h[x]>=h[x+1]>h[x+2]>..的隊列 且出列的人最少 2個最長升序列,枚舉中間2個點。 */
import java.util.*;
import java.math.*;
import java.io.*;
public class Main
{
static int MIN(int a,int b){return (a>b)? b:a;}
static int MAX(int a,int b){return (a<b)? b:a;}
static int Max_Int=200000000;
public static void main(String[] args)
{
Scanner cin=new Scanner(System.in);
int n;
double h[]=new double[1100];
int f1[]=new int [1100],f2[]=new int [1100];
while(cin.hasNextInt())
{
n=cin.nextInt();
for(int i=1;i<=n;i++)
h[i]=cin.nextDouble();
for(int i=1;i<=n;i++)
f1[i]=1;
for(int i=2;i<=n;i++)
for(int j=1;j<i;j++)
if(h[i]>h[j] && f1[i]<f1[j]+1)
f1[i]=f1[j]+1;
for(int i=1;i<=n;i++)
f2[i]=1;
for(int i=n-1;i>=1;i--)
for(int j=n;j>i;j--)
if(h[i]>h[j] && f2[i]<f2[j]+1)
f2[i]=f2[j]+1;
int Max=0;
for(int i=1;i<n;i++)
for(int j=i+1;j<=n;j++)
Max=MAX(f1[i]+f2[j],Max);
System.out.println(n-Max);
}
}
static int readInt()
{
int res = 0, c = 0;
do{
try{
c = System.in.read();
if (c == -1) return -1;
if (c == '-') return -readInt();
} catch (Exception e) {}
} while (c < '0' || c > '9');
do{
res = res * 10 + c - '0';
try
{
c = System.in.read();
}
catch (Exception e) {}
} while ('0' <= c && c <= '9');
return res;
}
}