#include<bits/stdc++.h>
using namespace std;
struct node{
int u,v;
double w;
}edge[10005];
int n,k,num,flag,f;
int a[10005],b[10005],fa[300005];
int find(int a)
{
if(fa[a]!=a)
fa[a] = find(fa[a]);
return fa[a];
}
void unionn(int a,int b){
fa[find(b)]=find(a);
}
double qiu(int i,int j){
return sqrt(pow((a[i]-a[j]),2)+pow((b[i]-b[j]),2));
}
int cmp(node a1,node b1){
return a1.w<b1.w;
}
void kruscal(){
for(int i=1;i<=f;i++){
if(num==n-k)
{
flag=1;
//cout<<1<<endl;
}
if(find(edge[i].u)!=find(edge[i].v)){
num++;
unionn(edge[i].u,edge[i].v);
if(flag){
printf("%.2lf",edge[i].w);
return ;
}
}
}
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>a[i]>>b[i];
}
f=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++){
if(i!=j){
edge[++f].u=i,edge[f].v=j,edge[f].w=qiu(i,j);
//cout<<f<<" "<<edge[f].w<<endl;
}
}
for(int i=1;i<=n;i++)
fa[i] = i;
sort(edge+1,edge+f+1,cmp);
/*for(int i=1;i<=f;i++)
cout<<edge[i].w<<" ";
cout<<endl;*/
kruscal();
//cout<<f<<endl;
return 0;
}