/*
kruskal自带二分
第n-k+1条边就是答案
*/
#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
const int N=1e3+10;
typedef pair<int,int> PII;
int n,k;
int p[N];
PII zb[N];
int cnt=0;
struct Node
{
int x,y;
double w;
bool operator<(const Node &W)const
{
return w<W.w;
}
}edges[N*N];
double get_dist(int a,int b,int x,int y)
{
return (double)sqrt((x-a)*(x-a)+(y-b)*(y-b));
}
int find(int x)
{
if(x!=p[x]) p[x]=find(p[x]);
return p[x];
}
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
int x,y;
cin>>x>>y;
zb[i].x=x;
zb[i].y=y;
}
for(int i=1;i<=n-1;i++)
{
for(int j=i+1;j<=n;j++)
{
double w=get_dist(zb[i].x,zb[i].y,zb[j].x,zb[j].y);
edges[++cnt]={i,j,w};
}
}
for(int i=1;i<=n;i++)
{
p[i]=i;
}
sort(edges+1,edges+1+cnt);
int co=0;
double res;
for(int i=1;i<=cnt;i++)
{
int a=edges[i].x;
int b=edges[i].y;
double w=edges[i].w;
int pa=find(a);
int pb=find(b);
if(pa!=pb)
{
p[pa]=pb;
co++;
if(co==n-k+1)
{
res=w;
break;
}
}
}
printf("%.2lf\n",res);
return 0;
}