#include<bits/stdc++.h>
using namespace std;
int n,k;
struct point
{
int x,y;
int belong = 0;
}P[1001];
double road[1001][1001];
bool check(double len)
{
for(int i=1;i<=1000;i++)
P[i].belong = 0;
int tot = 0;
queue<int> q;
for(int i=1;i<=n;i++)
{
if(!P[i].belong) P[i].belong = ++tot,q.push(i);
while(!q.empty())
{
int x = q.front();
q.pop();
for(int j = 1;j <= n;j ++)
if(road[x][j]<len&&!P[j].belong) P[j].belong = P[x].belong,q.push(j);
}
}
return tot >= k;
}
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
cin>>P[i].x>>P[i].y;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
road[i][j]=sqrt(pow(P[i].x - P[j].x,2) + pow(P[i].y - P[j].y,2));
double l = 1, r = 20000, mid = ( l + r ) / 2;
while(r - l > 0.001)
{
if( check( mid ) ) l = mid;
else r = mid;
mid = ( l + r ) / 2;
}
cout<<fixed<<setprecision(2)<<mid<<endl;
return 0;
}