#include <bits/stdc++.h>
#define ll long long
#define TIME (1.0*clock()/CLOCKS_PER_SEC)
using namespace std;

void input(){
	#define taskname ""
	if(fopen(taskname ".inp", "r")){
		freopen(taskname ".inp", "r", stdin);
		freopen(taskname ".out","w",stdout);
	}
}
const int N = 2e5+1;
const ll INF =1e18;
const int Q =1e9+7;
ll a[N];
ll n,k;
array<ll,2>get(ll mid){
    vector<array<ll,2>>dp(n+1,{INF,0});
    dp[0] = {0,0};
    for(ll i=1;i<=n;++i){
        if(i >=1) dp[i] = min(dp[i],dp[i-1]);
        if(i >= 2) dp[i] = min(dp[i],{dp[i-2][0] + (a[i]-a[i-1])*(a[i]-a[i-1]) - mid, dp[i-2][1] - 1});
    }
    return dp[n];
}
int main(){
	cin.tie(0)->sync_with_stdio(0);
	cout.tie(0);
	input();
	cin >> n >> k;
    for(ll i=1;i<=n;++i) cin >> a[i];
    sort(a+1,a+n+1);
    ll l = 0, r = 1e14;
    ll ans = -1;
    array<ll,2>res = {0,0};
    while(l <= r){
        ll mid = (l+r) >> 1;
        auto cur = get(mid);
        if(-cur[1] >= k){
            ans = mid;
            res = cur;
            r = mid - 1;
        }
        else l = mid+1;
    }
    cout << res[0] + ans*k << endl;
	return 0;
}
