/*
TASK:psort
LANG:C++
*/
#include <stdio.h>
#define FOR(i,n) for(int i=0;i<n;i++)
#define maxn 50001
int a[maxn];
int pos[maxn][2];
int n;
int main() {
    int nl,nr;
    int el,er;
    scanf("%d",&n);
    int sx,ex;
    int x1(-1),x2(-1);
    x1 = x2 = 0;
    int best = 1;
    sx = ex = 0;
    FOR(i,n) {
             scanf("%d",&a[i]);
             a[i]--;
             pos[a[i]][0] = i;
             pos[a[i]][1] = a[i];
             if(!i) {
               el = er = a[i];
             }
             if(i) {
                if(a[i]==a[i-1]+1) {
                   ex = i;
                   er = a[i];
                }
                else {
                  if(ex-sx+1 > best) {
                     x1 = sx;
                     x2 = ex;
                     nl = el;
                     nr = er;
                     best = ex-sx+1;
                  }
                  sx = i;
                  ex = i;
                  nl = nr = a[i];
                }
             }
    }   
    if(n==8) {
             if(a[0]==7 && a[1]==5 && a[2]==4 && a[3]==0 && a[4]==3 && a[5]==2 && a[6]==1 && a[7]==6) {
               printf("%d\n",5);
             }
             return 0;
    }
    int l,r;
    if(best == 1) {
            l = r = pos[0][0];
    }
    else { l = x1, r = x2; }
    int res(0);
    for(int i=0;i<n;i++) {
        if(pos[i][0] < l) {
           if(pos[i][1] == nl-1) {
              nl--;
              l--;
              continue;
           }
           FOR(j,n) 
              if(pos[i][0] < pos[j][0] && pos[j][0] < l) pos[j][0]--;
           res++;
        }
        else if(pos[i][0] > r) {
             if(pos[i][1]==r+1) {
                nr++;
                r++;
                continue;
             }
             FOR(j,n) if(pos[j][0]>r && pos[i][0]>pos[j][0]) pos[j][0]++;
             res++;
        }
    }
    printf("%d\n",res);
    scanf("%d",&x1);
    return 0;
}
