#include <bits/stdc++.h>
using namespace std;
const int inf = 1005;
int n,dp[1<<18][18],baby[18],me[18];
int solve(int mask, int k){
if(dp[mask][k]!=-1)return dp[mask][k];
if(k==0)return 0;
int ans = inf;
for(int i=1; i<=n; i++){
if(mask & (1<<i)){
ans = min(ans, abs(i-k) + abs(me[i]-baby[k]) + solve(mask&(~(1<<i)), k-1));//remove this bit ie one less baby row and than number of way for k-1 rows...
}
}
return dp[mask][k] = ans;
}
int main(){
while(scanf("%d",&n)){
if(n==0)break;
memset(dp, -1, sizeof dp);
for(int i=1; i<=n; i++)scanf("%d",&baby[i]);
for(int i=1; i<=n; i++)scanf("%d",&me[i]);
cout<<solve((1<<n+1) -1, n)<<endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgaW5mID0gMTAwNTsKaW50IG4sZHBbMTw8MThdWzE4XSxiYWJ5WzE4XSxtZVsxOF07CmludCBzb2x2ZShpbnQgbWFzaywgaW50IGspewoJaWYoZHBbbWFza11ba10hPS0xKXJldHVybiBkcFttYXNrXVtrXTsKCWlmKGs9PTApcmV0dXJuIDA7CglpbnQgYW5zID0gaW5mOwoJZm9yKGludCBpPTE7IGk8PW47IGkrKyl7CgkJaWYobWFzayAmICgxPDxpKSl7CmFucyA9IG1pbihhbnMsIGFicyhpLWspICsgYWJzKG1lW2ldLWJhYnlba10pICsgc29sdmUobWFzayYofigxPDxpKSksIGstMSkpOy8vcmVtb3ZlIHRoaXMgYml0IGllIG9uZSBsZXNzIGJhYnkgcm93IGFuZCB0aGFuIG51bWJlciBvZiB3YXkgZm9yIGstMSByb3dzLi4uCn0KfQpyZXR1cm4gZHBbbWFza11ba10gPSBhbnM7Cn0KCmludCBtYWluKCl7Cgl3aGlsZShzY2FuZigiJWQiLCZuKSl7CgkJaWYobj09MClicmVhazsKCQltZW1zZXQoZHAsIC0xLCBzaXplb2YgZHApOwoJCWZvcihpbnQgaT0xOyBpPD1uOyBpKyspc2NhbmYoIiVkIiwmYmFieVtpXSk7CgkJZm9yKGludCBpPTE7IGk8PW47IGkrKylzY2FuZigiJWQiLCZtZVtpXSk7CgkJY291dDw8c29sdmUoKDE8PG4rMSkgLTEsIG4pPDxlbmRsOwoJCX0KCQlyZXR1cm4gMDsKCX0K