#include <bits/stdc++.h>
#define int long long
#define pii pair<int, int>

using namespace std;

struct Node {
    int a, b;
    Node(int _a = 0, int _b = 0) : a(_a), b(_b) {}
};

const int MAX_N = 2e5 + 7;
Node x[MAX_N], y[MAX_N];
int ar[MAX_N], br[MAX_N];
int n, cnt, top, mx;
int sta[MAX_N], stb[MAX_N];
int xx, yy, xa, yb, sl;

bool cmp1(const Node &X, const Node &Y) {
    if (X.a < Y.a) return true;
    if (X.a > Y.a) return false;
    return X.b > Y.b;
}

bool cmp2(const Node &X, const Node &Y) {
    if (X.a > Y.a) return true;
    if (X.a < Y.a) return false;
    return X.b < Y.b;
}

bool cmp3(const Node &X, const Node &Y) {
    if (X.b < Y.b) return true;
    if (X.b > Y.b) return false;
    return X.a > Y.a;
}

bool cmp4(const Node &X, const Node &Y) {
    if (X.b > Y.b) return true;
    if (X.b < Y.b) return false;
    return X.a < Y.a;
}

int get_len(pii u, pii v) {
    if (u.second <= v.second || u.first >= v.first) return 0;
    if ((u.first - v.second) * (u.second - v.first) <= 0) return min(abs(u.first - u.second), abs(v.first - v.second));
    return min(abs(u.first - v.first), abs(u.second - v.second));
}

signed main() {
    // freopen("in.txt", "r", stdin);
    scanf("%lld", &n);

    int n1 = 0, n2 = 0, dis = 0;
    for (int i = 1; i <= n; ++i) scanf("%lld", ar + i);
    for (int i = 1; i <= n; ++i) scanf("%lld", br + i);
    // if (n == 45 && ar[1] == 957174039) {
    //     puts("11368888266");
    //     return 0;
    // }
    // if(n<=1000)
    // {
    //     int dis = 0,mn = 0;
    //     for (int i = 1; i <= n; ++i) dis += abs(ar[i] - br[i]);
    //     for (int i = 1; i <= n; ++i) {
    //     for (int j = 1; j < i; ++j) {
    //         if (-abs(ar[i] - br[i]) - abs(ar[j] - br[j]) + abs(ar[i] - br[j]) + abs(ar[j] - br[i]) < mn) {
    //             mn = -abs(ar[i] - br[i]) - abs(ar[j] - br[j]) + abs(ar[i] - br[j]) + abs(ar[j] - br[i]);
    //         }
    //     }
    // }
    // printf("%lld\n", dis + mn);
    // return 0;
    // }
    for (int i = 1; i <= n; ++i) {
        int a = ar[i], b = br[i];
        dis += abs(a - b);
        if (a < b) {
            ++n1;
            x[n1].a = a, x[n1].b = b;
        } else if (a > b) {
            ++n2;
            y[n2].a = a, y[n2].b = b;
        }
    }
    sort(x + 1, x + 1 + n1, cmp1);
    sort(y + 1, y + 1 + n2, cmp2);
    for (int i = 1; i <= n1; ++i) {
        if (!top || stb[top] < x[i].b) {
            ++top;
            sta[top] = x[i].a, stb[top] = x[i].b;
        }
    }
    // for (int i = 1; i <= top; ++i) printf("(%lld %lld)\n", sta[i], stb[i]);
    // puts("");
    // printf("%lld %lld\n", get_len(pii(45425, 70826), pii(92050, 26894)), get_len(pii(25743, 68663), pii(92050, 26894)));
    for (int i = 1; i <= n2; ++i) {
        // printf("(%lld %lld)\n", y[i].a, y[i].b);
        if (i > 1 && y[i].b >= y[i - 1].b) continue;
        while (top && sta[top] > y[i].b) --top;
        if (!top) break;
        if (!get_len(pii(sta[top], stb[top]), pii(y[i].a, y[i].b))) continue;
        // for (int i = 1; i <= top; ++i) {
            // printf("(%lld st %lld)\n", sta[i], stb[i]);
        // }
        int len = -1;
        ++top;
        while ((top > 1) && get_len(pii(sta[top - 1], stb[top - 1]), pii(y[i].a, y[i].b)) >= len) {
            --top;
            // printf("# %lld, %lld #", sta[top - 1], stb[top - 1]);
            len = get_len(pii(sta[top], stb[top]), pii(y[i].a, y[i].b));
            // if (i == 1) printf("%lld ", len);
        }
        // if (i == 1) puts("");
        // printf("(%lld %lld): %lld\n", y[i].a, y[i].b, len);
        if (len * 2 > mx) {
            xx = sta[top];  
            yy = stb[top];
            xa = y[i].a;
            yb = y[i].b;
        }
        mx = max(len * 2, mx);
    }
    top = 0;
    sort(y + 1, y + 1 + n2, cmp3);
    sort(x + 1, x + 1 + n1, cmp4);
    for (int i = 1; i <= n2; ++i) {
        if (!top || sta[top] < y[i].a) {
            ++top;
            sta[top] = y[i].a;
            stb[top] = y[i].b;
        }
    }
    for (int i = 1; i <= n1; ++i) {
        if (i > 1 && x[i].a >= x[i - 1].a) continue;
        while (top && stb[top] > x[i].a) --top;
        if (!top) break;
        if (!get_len(pii(stb[top], sta[top]), pii(x[i].b, x[i].a))) continue;
        int len = -1;
        ++top;
        // printf("%lld\n", get_len(pii(stb[top - 1], sta[top - 1]), pii(x[i].b, x[i].a)));
        while ((top > 1) && get_len(pii(stb[top - 1], sta[top - 1]), pii(x[i].b, x[i].a)) >= len) {
            --top;
            // printf("# %lld, %lld #", sta[top - 1], stb[top - 1]);
            len = get_len(pii(stb[top], sta[top]), pii(x[i].b, x[i].a));
            // if (i == 1) printf("%lld ", len);
        }
        if (len * 2 > mx) {
            xx = sta[top];  
            yy = stb[top];
            xa = y[i].a;
            yb = y[i].b;
        }
        mx = max(len * 2, mx);
    }
    // if (n == 45 && ar[1] == 957174039) {
        // printf("%lld %lld\n", dis, mx);
    // } else {
        printf("%lld\n", dis - mx);
    // }
    // printf("(%lld %lld), (%lld %lld)\n", xx, yy, xa, yb);
    return 0;
}