/*
TASK:round
LANG:C
*/

//#define DEBUG_ME

#include <stdio.h>

#define IN              "round.in"
#define OUT             "round.out"
#define MAX             2048
#define min(a, b)       (((a)<(b))?(a):(b))

long n, door1[MAX], door2[MAX];
short price1[MAX][MAX], price2[MAX][MAX];

long save1[MAX], save2[MAX], *res, *prev, *tmp;

int main()
{
   long i, j, best1, best2, before;
   
#ifdef DEBUG_ME
   freopen(IN, "r", stdin);
   freopen(OUT, "w", stdout);
#endif

   scanf("%ld", &n);
   for(i=0; i<n; i++)
      scanf("%ld", door1+i+1);
   for(i=0; i<n; i++)
      scanf("%ld", door2+i+1);

   for(i=1; i<=n; i++)
   {
      best1=0;
      best2=0;
      
      for(j=1; j<i; j++)
         if(door1[j]<door1[i]) best1++;
         else                  best2++;

      price1[i][0]=min(best1, best2);

      for(j=1; j<=n; j++)
      {
         if(door2[j]<door1[i]) best1++;
         else                  best2++;

         price1[i][j]=min(best1, best2);
      }
   }

   for(i=1; i<=n; i++)
   {
      best1=0;
      best2=0;

      for(j=1; j<i; j++)
      {
         if(door2[i]>n)
         {
           if(door2[j]>n && door2[j]<door2[i]) best1++;
           else                                best2++;
         }
         else
         {
           if(door2[j]>n || door2[j]<door2[i]) best1++;
           else                                best2++;
         }
      }

      price2[i][0]=min(best1, best2);

      for(j=1; j<=n; j++)
      {
         if(door2[i]>n)
         {
           if(door1[j]>n && door1[j]<door2[i]) best1++;
           else                                best2++;
         }
         else
         {
           if(door1[j]>n || door1[j]<door2[i]) best1++;
           else                                best2++;
         }

         price2[i][j]=min(best1, best2);
      }
   }

   res=save1;
   prev=save2;

   for(i=1; i<=n; i++)
      prev[i]=price2[i][0];
      
   for(i=1; i<=n; i++)
   {
      res[0]=prev[0]+price1[i][0];
      before=prev[0]+price1[i][0];
      
      for(j=1; j<=n; j++)
      {
         best1=prev[j]+price1[i][j];
         best2=before+price2[j][i];

         res[j]=min(best1, best2);

         before=res[j];
      }

      tmp=res;
      res=prev;
      prev=tmp;
   }

   printf("%ld\n", prev[n]);

#ifdef DEBUG_ME
   fclose(stdin);
   fclose(stdout);
#endif

   return 0;
}

