/*
分析:
题目不难,其实就是在教我们学离散化哦~
上午到现在就做了俩水题,还都被虐,桑透了心……,还好这个
1a了,要不用劝,直接就撞墙了……
*/
#include"stdio.h"
struct segtree
{
int l,r,mid;
int sum;
}T[15555];
int min(int a,int b)
{
return a>b?b:a;
}
void build(int l,int r,int k)
{
T[k].l=l;
T[k].r=r;
T[k].mid=(l+r)/2;
T[k].sum=0;
if(l==r) return ;
build(l,T[k].mid,2*k);
build(T[k].mid+1,r,2*k+1);
}
void insert(int aim,int l,int r,int k)
{
if(T[k].l==aim&&T[k].r==aim) {T[k].sum++;return ;}
if(aim<=T[k].mid) insert(aim,l,T[k].mid,2*k);
else insert(aim,T[k].mid+1,r,2*k+1);
T[k].sum=T[2*k].sum+T[2*k+1].sum;
}
int t_s;
void search(int l,int r,int k)
{
if(T[k].l==l&&T[k].r==r) {t_s+=T[k].sum;return ;}
if(r<=T[k].mid) search(l,r,2*k);
else if(l>T[k].mid) search(l,r,2*k+1);
else
{
search(l,T[k].mid,2*k);
search(T[k].mid+1,r,2*k+1);
}
}
int main()
{
int n;
int i;
int num[5011];
int sum;
int ans;
while(scanf("%d",&n)!=-1)
{
build(1,n,1);
sum=0;
for(i=0;i<n;i++)
{
scanf("%d",&num[i]);
num[i]++;
t_s=0;
if(num[i]!=n) search(num[i]+1,n,1);
sum+=t_s;
insert(num[i],1,num[i],1);
}
ans=sum;
for(i=n-1;i>=0;i--)
{
sum=sum-(n-num[i])+(num[i]-1);
ans=min(ans,sum);
}
printf("%d\n",ans);
}
return 0;
}