#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;
}