
var
x,y:array[1..2000] of integer;
w:array[1..2000,1..2000] of real;
dist,c:array[1..2000] of real;
flag:array[1..2000] of boolean;
now,d,n,m,i,j:integer;
procedure qs(l,r:integer);
var
i,j:integer;t,m:real;
begin
i:=l;j:=r;m:=c[(l+r)>>1];
repeat
while c[i]<m do inc(i);
while c[j]>m do dec(j);
if i<=j then
begin
t:=c[i];c[i]:=c[j];c[j]:=t;
inc(i);dec(j);
end;
until i>j;
if
i<r then qs(i,r);
if
l<j then qs(l,j);
end;
procedure prim(vi:integer);
var
i,j,k:integer;min:real;
begin
for
i:=1 to n do
dist[i]:=w[vi,i];
flag[vi]:=true;
for
i:=1 to n-1 do
begin
min:=maxlongint;
for j:=1 to n do
if (dist[j]<min) and (not flag[j]) then
begin
k:=j;min:=dist[j];
end;
flag[k]:=true;
inc(now);c[now]:=dist[k];
for j:=1 to n do
if dist[j]>w[k,j] then dist[j]:=w[k,j];
end;
end;
begin
readln(n,m);
now:=0;
for
i:=1 to n do readln(x[i],y[i]);
for
i:=1 to n-1 do
for j:=i+1 to n do
begin
inc(d);
w[i,j]:=sqrt(sqr(x[i]-x[j])+sqr(y[i]-y[j]));
w[j,i]:=w[i,j];
end;
prim(1);
qs(1,now);
writeln(c[now-m+1]:0:2);
end.
