#include<cstdio>
#include<iostream>
#include<cstring>
#include<map>
#include<string>
#include<algorithm>
#include<vector>
#define ll long long
#define ff first
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define oset tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update>
using namespace std;
const int maxn=1e5;
int n,br;
ll rez;
struct ss{
   int x,tip,id;
}event[2*maxn+10];
bool srt(ss a,ss b){
  return a.x<b.x;
}
long long Resi(int N, int *A, int *B) {


    oset st;

    n=N;

    for(int i=1;i<=n;i++){
        event[++br].x=A[i-1];
        event[br].tip=0;
        event[br].id=i-1;

        event[++br].x=B[i-1];
        event[br].tip=1;
        event[br].id=i-1;
    }

    sort(event+1,event+br+1,srt);

    for(int i=1;i<=br;i++){


        if(!event[i].tip){

           int mesto=st.order_of_key(B[event[i].id]);
           int cost_napred=mesto;
           int cost_nazad=st.size()-mesto;

           rez+=(ll)min((ll)cost_napred,(ll)cost_nazad);

           ///printf("%d %d %d %d\n",event[i].id,event[i].x,B[event[i].id],mesto);

           st.insert(B[event[i].id]);
        }
        else st.erase(event[i].x);

    }
return rez;

}