#include<bits/stdc++.h>
using namespace std;
long long n,a[500005],k,b[500005];
long long q[500005],l,r;
bool cmp(long long x,long long y){
return x>y;
}
struct NODE {
int idx;
long long num;
};
deque<NODE> dq;
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1,cmp);
if(k==2){
long long minn=1e16;
for(int i=1;i<n;i++){
minn=min(a[i]-a[i+1],minn);
}
cout<<minn*minn;return 0;
}
long long ans=1e16;
for(int i=1;i<=n;i++){
if(a[i]==a[i+1]){
cout<<0;return 0;
}
}
for(int i=1;i<=n;i++){
b[i]=a[i]-a[i+1];
if(i==n)b[i]=a[i-1]-a[i];
}
for (int i = 1; i <n; ++i) {
while (!dq.empty() && i - dq.front().idx >= k-1) dq.pop_front();
while ((!dq.empty() && b[i] < dq.back().num) || (int) dq.size() == k-1) dq.pop_back();
dq.push_back({i, b[i]});
if (i >= k-1) {
ans=min(ans,dq.front().num*(a[i-k+2]-a[i+1]));
}
}
cout<<ans;
return 0;
}