#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#include <string>#include <vector>#include <stack>#include <bitset>#include <cstdlib>#include <cmath>#include <set>#include <list>#include <deque>#include <map>#include <queue>usingnamespacestd;
typedeflonglong ll;
#define maxn 300010int a[maxn];
int dp[maxn];
int k,n;
int check (int mid){
int i;
int last = 0;
for (i=k;i<=n;i++){
int j = dp[i-k];
if (a[i]-a[j+1]<=mid) last=i;
dp[i]=last;
}
return dp[n]==n;
}
int main (){
int i;
scanf ("%d%d",&n,&k);
for(i=1;i<=n;i++){
scanf ("%d",&a[i]);
}
sort (a+1,a+1+n);
int l =-1,r = 1e9+10;
int ans;
if (k==1) ans = 0;
else {while (r-l>1){
int mid= (l+r)/2;
if (check(mid)) r=mid;
else l = mid;
}
ans = r;
}
printf("%d\n",ans);
}