#include<bits/stdc++.h>
using namespace std;
int n;
double x[200001],y[200001];
struct node{
double x,y;
bool operator<(const node &A) const{
return x< A.x ;
}
}a[200001],c[200001];
double solve(int l,int r){
if(l==r)
return 1e10;
int m=(l+r)/2;
double d=min(solve(l,m),solve(m+1,r));
int cnt=0;
for(int i=l;i<=r;i++){
if(abs(a[i].x-a[m].x )<d){
c[++cnt].x =a[i].y ,c[cnt].y =a[i].x ;
}
}
sort(c+1,c+cnt+1);
for(int i=1;i<=cnt;i++){
for(int j=i+1;j<=cnt&&c[j].x -c[i].x <d;j++)
d=min(d,sqrt((c[i].x-c[j].x )*(c[i].x-c[j].x)+(c[i].y -c[j].y )*(c[i].y -c[j].y )));
}
return d;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%lf%lf",&a[i].x ,&a[i].y );
}
sort(a+1,a+n+1);
printf("%.4f\n",solve(1,n));
return 0;
}