#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>#include<cmath>usingnamespacestd;
constint N=2001;
struct note
{
int x,y,l;
};
int fa[N],a[N][2];
note side[N*N];
int n,c,lo;
void init(){
scanf("%d%d",&n,&c);
int i,j;
for (i=1;i<=n;i++)
scanf("%d%d",&a[i][0],&a[i][1]);
lo=0;
for (i=1;i<=n;i++)
for (j=i+1;j<=n;j++)
{
lo++;
side[lo].x=i; side[lo].y=j;
side[lo].l=(a[i][0]-a[j][0])*(a[i][0]-a[j][0])+(a[i][1]-a[j][1])*(a[i][1]-a[j][1]);
if (side[lo].l<c) lo--;
}
}
void qsort(int l,int r)
{
int mid=side[(l+r)/2].l;
int i=l,j=r;
while (i<=j)
{
while ((side[i].l<mid) && (i<=r)) i++;
while ((side[j].l>mid) && (j>=l)) j--;
if (i<=j) {side[0]=side[i]; side[i]=side[j];side[j]=side[0]; i++;j--;}
}
if (l<j) qsort(l,j);
if (i<r) qsort(i,r);
}
int root(int x)
{
int i,ro;
for (i=x;fa[i]!=0;i=fa[i]);
ro=i;
for (i=x;fa[i]!=0;i=fa[i]) fa[i]=ro;
return ro;
}
int main()
{
init();
qsort(1,lo);
memset(fa,0,sizeof(fa));
int k=0,ans=0,j=0;
while ((k!=n-1) && (j<lo))
{
j++;
int u,w;
u=root(side[j].x); w=root(side[j].y);
if (u!=w)
{
fa[u]=w;
ans+=side[j].l;
k++;
}
}
if (k==n-1) printf("%d",ans);
elseprintf("-1");
return0;
}