#include "wiring.h"
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll maxn=2e5;
ll dp[maxn+100],pref[maxn+100];
ll min_total_length(vector<int> r, vector<int> b) {
vector<pair<ll,ll> >isi;
vector<ll> wrn[2];
for(ll q=0;q<r.size();q++){
isi.push_back({r[q],0}); wrn[0].push_back(r[q]);
}
for(ll q=0;q<b.size();q++){
isi.push_back({b[q],1}); wrn[1].push_back(b[q]);
}
isi.push_back({-1,0});
sort(isi.begin(),isi.end());
for(ll q=1;q<isi.size();q++){
pref[q]=pref[q-1];
if(isi[q].second==0)pref[q]-=isi[q].first;
else pref[q]+=isi[q].first;
}
ll lst=0;
for(ll q=1;q<isi.size();q++){
dp[q]=1e18;
auto[idx,col]=isi[q];
//cout<<q<<' ';
ll it=lower_bound(wrn[1-col].begin(),wrn[1-col].end(),idx)-wrn[1-col].begin();
//cout<<it<<endl;
if(it!=wrn[1-col].size()){
dp[q]=min(dp[q],dp[q-1]+abs(idx-wrn[1-col][it]));
}
it--;
if(it>=0){
dp[q]=min(dp[q],dp[q-1]+abs(idx-wrn[1-col][it]));
}
//cout<<q<<' '<<dp[q]<<endl;
if(q==1)continue;
if(isi[q].second!=isi[q-1].second){
lst=q-1;
dp[q]=min(dp[q],dp[lst-1]+(isi[q].first-isi[q-1].first));
}
else{
if(lst>=2 && isi[lst-1].second==1-isi[q].second){
//if(q==6)cout<<pref[lst-2]<<"K"<<endl;
lst--;
dp[q]=min(dp[q],dp[lst-1]+abs(pref[q]-pref[lst-1]));
}
}
//cout<<dp[q]<<endl;
}
return dp[isi.size()-1];
}