#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll read() {
ll x = 0,f = 0;char ch = getchar();
while(!isdigit(ch)) {if(ch == '-')f = 1;ch = getchar();}
while(isdigit(ch)) {x = x * 10 + ch - '0';ch = getchar();}
return f ? -x : x;
}
const ll N = 3100,inf = 1e13;
ll f[N],g[N],s[N],d[N],dis[N],w[N][N];
ll n,K;
void solve(ll mid) {
for(int i = 1;i <= n;i++) f[i] = inf,g[i] = 0;
f[0] = g[0] = 0;
for(int i = 1;i <= n;i++) {
for(int j = 0;j < i;j++) {
if(f[j] + w[j + 1][i] + mid < f[i]) {
f[i] = f[j] + w[j + 1][i] + mid;
g[i] = g[j] + 1;
}
}
}
}
int main() {
n = read();K = read();
for(ll i = 1;i <= n;i++) d[i] = read();
sort(d + 1,d + 1 + n);
for(ll i = 1;i <= n;i++) s[i] = s[i - 1] + d[i];
for(ll i = 1;i <= n;i++) {
for(ll j = i + 1;j <= n;j++) {
ll mid = i + j >> 1;
w[i][j] += d[mid] * (mid - i) - (s[mid - 1] - s[i - 1]);
w[i][j] += (s[j] - s[mid]) - d[mid] * (j - mid);
}
}
ll l = 0,r = inf,ans = inf;
while(l <= r) {
ll mid = l + r >> 1;
solve(mid);
if(g[n] <= K) ans = mid,r = mid - 1;
else l = mid + 1;
}
solve(ans);
printf("%lld\n",f[n] - ans * g[n]);
return 0;
}