import java.util.*;
public class Main{
static int n;
static double [][]a;
static double [][]b;
public static double dis(double x1,double y1,double x2,double y2) {
return Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
public static double merge(int l,int r) {
if(l==r)
return Double.MAX_VALUE;
if(l+1==r)
return dis(a[l][1],a[l][2],a[r][1],a[r][2]);
int mid=(l+r)>>1;
double d=Math.min(merge(l,mid), merge(mid+1,r));
int k=0;
for(int i=l;i<=r;i++) {
if(Math.abs(a[i][1]-a[mid][1])<d) {
k++;
b[k][1]=a[i][1];
b[k][2]=a[i][2];
}
}
for(int i=1;i<=k;i++) {
for(int j=i+1;j<=k&&b[j][2]-b[i][2]<d;j++)
d=Math.min(d,dis(b[i][1],b[i][2],b[j][1],b[j][2]));
}
return d;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
a=new double[n+1][3];
b=new double[n+1][3];
for(int i=1;i<=n;i++) {
for(int j=1;j<=2;j++)
a[i][j]=sc.nextInt();
}
Arrays.sort(a,Comparator.comparingDouble(a->a[1]));
System.out.printf("%.4f",merge(1,n));
}
}