#include<bits/stdc++.h>
using namespace std;
void read(int&a){
char ch;while(!((ch=getchar())>='0')&&(ch<='9'));
a=ch-'0';while(((ch=getchar())>='0')&&(ch<='9'))a*=10,a+=ch-'0';
}
const int MAXN=1000100;
int a[MAXN],b[MAXN],dif[MAXN];
int main()
{
int n,k,i,j,m,cnt_max,cnt,ct;
while(~scanf("%d%d",&n,&k))
{
for(i=1;i<=n;i++)
read(a[i]);
sort(a+1,a+n+1);
memset(dif,0,sizeof(dif));
memset(b,0,sizeof(b));
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
dif[a[j]-a[i]]++;
m=n-k-1;
cnt_max=k*(k+1)/2;
while(m++)
{
cnt=ct=0;
for(i=m;i<MAXN;i+=m)
cnt+=dif[i];
if(cnt>cnt_max)
continue;
for(i=1;i<=n;i++)
{
if(b[a[i]%m]==m)
{
ct++;
if(ct>k)
break;
}
b[a[i]%m]=m;
}
if(ct<=k)
break;
}
printf("%d\n",m);
}
}