#include <bits/stdc++.h>
using namespace std;
using int64 = long long;

// 计算把整个已排序数组都变为 b[t] 的 L1 代价(用前缀和 O(1))
static inline long long cost_all_to_t(const vector<long long>& b,
                                      const vector<long long>& ps, int t) {
    int n = (int)b.size();
    long long left  = 1LL * b[t] * t - (t ? ps[t - 1] : 0LL);
    long long right = (ps[n - 1] - ps[t]) - 1LL * b[t] * (n - 1 - t);
    return left + right;
}

int main() {
    int n;
    cin >> n;
    vector<long long> a(n);
    for (int i = 0; i < n; ++i) cin >> a[i];
    sort(a.begin(), a.end());
    vector<long long> ps(n);
    ps[0] = a[0];
    for (int i = 1; i < n; ++i) ps[i] = ps[i - 1] + a[i];
    // 删去一个下标后,长度 m = n-1 的中位数位置 j = m/2(0-based)
    int j = (n - 1) / 2;
    int tL = j;
    int tR = min(n - 1, j + 1);
    long long allL = cost_all_to_t(a, ps, tL); // 全体变成 a[tL] 的代价
    long long allR = cost_all_to_t(a, ps, tR); // 全体变成 a[tR] 的代价
    long long ans = (1LL << 62);
    for (int i = 0; i < n; ++i) {
        if (i <= j) {
            // 删 i 后中位数在原数组位置 tR
            long long cand = allR - llabs(a[i] - a[tR]);
            if (a[i] == a[tR]) cand += 1; // 需要把“不同的那个”挪开 1
            ans = min(ans, cand);
        } else {
            // 删 i 后中位数在原数组位置 tL
            long long cand = allL - llabs(a[i] - a[tL]);
            if (a[i] == a[tL]) cand += 1;
            ans = min(ans, cand);
        }
    }
    cout << ans << '\n';
    return 0;
}