const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
let arr = [];
while(line = await readline()){
arr.push(line);
}
let n = parseInt(arr[0]);
arr = arr[1].split(' ').map(a => parseInt(a));
// 分别寻找 列表arr 中每一项 正序left 和 逆序right 递增的最大值
let left = getMaxGrowList(arr);
let right = getMaxGrowList(arr.reverse());
right.reverse();
let arrRes = [];
// 合并正序和逆序递增最大值的结果,获得每一项为最高时,需要抽走的人数
for(let i = 0; i < n; i++) {
arrRes.push(n - right[i] - left[i] + 1);
}
// 获取最小抽走的人数就是答案
console.log(Math.min(...arrRes));
}()
// 寻找从左到各项递增的最大值
var getMaxGrowList = function(arr = []) {
let res = [];
// 最左侧递增值是1
res.push(1);
for(let i = 1 ;i < arr.length; i++) {
let maxCount = 1;
for(let ii = 0; ii < i; ii++) {
// 找到之前项目中,小于当前值的最大 count
if(arr[ii] < arr[i]) {
maxCount = Math.max(maxCount, res[ii] + 1);
}
}
res.push(maxCount);
}
return res;
}