//效率好低
//状态Dp[i][j]为前i件物品选j对的最优解
// 当i=j*2时,只有一种选择即 Dp[i-2][j-1]+(w[i]-w[i-1])^2
// 当i>j*2时,Dp[i][j] = min(Dp[i-1][j],Dp[i-2][j-1]+(w[i]-w[i-1])^2
#include<iostream>//2313563 2010-04-08 19:12:40 Accepted 1421 890MS 15940K 751 B C++ 悔惜晟
#include<cstdio>
#include<string>
#include<algorithm>
using namespace std;
long long int dp[2002][1001];
int main()
{
int n, k, i, j;
int num[2002];
while(scanf("%d %d", &n, &k) != EOF)
{
for(i = 1; i <= n; i++)
scanf("%d", &num[i]);
//for(i = 0; i <= k; i++)
//dp[0][i] = 0;
//dp[1][i] = 0;
sort(&num[1], &num[1] + n);
memset(dp, 0, sizeof(dp));
for(j = 1; j <= k; j++)
{
for(i = 2 * j; i <= n; i++)//一开始这里没处理好,j 写前面是明显好的
{
if(i == 2 * j)
dp[i][j] = dp[i - 2][j-1] + (num[i] - num[i - 1]) * (num[i] - num[i - 1]);
else
dp[i][j] = min(dp[i - 1][j] ,dp[i - 2][j-1] + (num[i] - num[i - 1]) * (num[i] - num[i - 1]));
}
}
printf("%I64d/n", dp[n][k]);
}
}