// 思想类似于HDU 1024 Max Sum Plus Plus
//这题的空间也可以像那题一样压缩!
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(int a,int b)
{
return a<b;
}
int a[2003];
int dp[2001][1001];
int main()
{
int n,k,i,j,sum;
while(scanf("%d%d",&n,&k)!=EOF)
{
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+n+1,cmp);
//for(i=1;i<=n;i++)
// printf("%d ",a[i]);
for(i=1;i<n;i++)
a[i]=(a[i+1]-a[i])*(a[i+1]-a[i]);
dp[2][1]=a[1];
for(i=3;i<=n;i++)
dp[i][1]=dp[i-1][1]<a[i-1]?dp[i-1][1]:a[i-1];
for(j=2;j<=k;j++)
{
sum=0;
for(i=1;i<2*j;i+=2)
sum+=a[i];
dp[j*2][j]=sum;
sum=j*2;
for(i=sum+1;i<=n;i++)
dp[i][j]=dp[i-2][j-1]+a[i-1]<dp[i-1][j]?dp[i-2][j-1]+a[i-1]:dp[i-1][j];
}
printf("%d\n",dp[n][k]);
}
return 0;
}