#include<bits/stdc++.h>
using namespace std;
long long n,m,s[100001],p[100001],l=0,r=LLONG_MAX;
bool ok(long long x){
long long lp=1,ls=1;
while(lp<=m&&ls<=n){
long long dis=abs(p[lp]-s[ls]);
if(s[ls]<=p[lp]){
if(dis>abs(p[lp]-s[ls+1])){
ls++;
continue;
}
if(dis>x){
return false;
}
lp++;
while(lp<=m&&p[lp]<=s[ls]+x){
lp++;
}
ls++;
}
else{
if(dis>x){
return false;
}
if(3*dis>x){
lp++;
while(lp<=m&&p[lp]<=s[ls]+(x-dis)/2){
lp++;
}
ls++;
}
else{
lp++;
while(lp<=m&&p[lp]<=s[ls]+x-2*dis){
lp++;
}
ls++;
}
}
}
if(lp<=m){
return false;
}
return true;
}
int main(){
scanf("%lld %lld",&n,&m);
for(long long i=1;i<=n;i++){
scanf("%lld",&s[i]);
}
for(long long i=1;i<=m;i++){
scanf("%lld",&p[i]);
}
while(l<r){
long long mid=(l+r)/2;
if(ok(mid)){
r=mid;
}
else{
l=mid+1;
}
}
printf("%lld\n",l);
return 0;
}