/*
TASK: seq
LANG: C++
*/
#include <stdio.h>
#include <algorithm>
#include <map>
using namespace std;

 map < int,int > g;
 map < int,int >::iterator it;
 int a[1000002];
 int n,m;
 pair<int,int> b[1000002];

 int r (int i,int j,int k)
  {
   return (i>j && j<k) || (i<j && j>k);
  }  

 int main ()
  {
   int i,c1,c2,o1,o2,x1,y1,x2,y2,p,q,j;
   scanf("%d",&n);
   for (i=1;i<=n;i++)
    {
     scanf("%d",&a[i]);
     g[a[i]]=0;
    }
   for (it=g.begin(),m=1;it!=g.end();it++,m++)
    it->second=m;
   for (i=1;i<=n;i++)
    {
     j=g[a[i]];
     if (b[j].first==0) b[j].first=i;
     b[j].second=i;
    }
   c1=c2=0;
   for (i=2;i<=m;i++)
    {
     x1=b[i-1].first;
     y1=b[i-1].second;
     x2=b[i].first;
     y2=b[i].second;
     p=r(y1,x1,y2);
     q=r(x1,y1,y2);
     o1=min(c1+r(x1,y2,x2)+p,c2+r(y1,y2,x2)+q);
     p=r(y1,x1,x2);
     q=r(x1,y1,x2);
     o2=min(c1+r(x1,x2,y2)+p,c2+r(y1,x2,y2)+q);
     c1=o1;
     c2=o2;
    }
   printf("%d\n",min(c1,c2));
   return 0;
  }
