//用两个数组分别记录每个数第一次和第二次出现的位置(第一次a[i]记录,第二次b[i]记录)
//循环一次对应位置b[i]-a[i]-1全部加在一起,就是初始的权值和
//然后我们还可以进行一次交换操作,采用贪心的策略,每次把最大的a[i]换最小的b[i],可以实现最大化权值和。
//如果最大的a[i]比最小的b[i]还小那就不换,换了权值和会变小。
#include <algorithm>
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
int n;
cin>>n;
vector<int> a(n+1);
vector<int> b(n+1);
for(int i=1;i<=2*n;i++){
int x;
cin>>x;
if(a[x]==0) a[x]=i;
else b[x]=i;
}
ll ans=0;
for(int i=1;i<=n;i++){
ans+=b[i]-a[i]-1;
}
sort(a.begin(),a.end());
sort(b.begin(),b.end());
if(a[n]>b[1])
ans+=2*(a[n]-b[1]);
cout<<ans<<'\n';
return 0;
}