#include<bits/stdc++.h>
#define maxn 423456
#define int long long
using namespace std;
struct node{
int a[4];
}p[maxn];
int n,ans=0x3f3f3f3f3f3f3f3f,X,Y,X_,Y_;
double z,w,x[maxn],y[maxn],x_,y_;
bool cmp(const node&u,const node&v){
return u.a[0]*u.a[1]<v.a[0]*v.a[1];
}
signed main(){
scanf("%lld",&n);
for(int i=1;i<=n;i++)scanf("%lf%lf",&x[i],&y[i]);
for(int OrzZky=1;OrzZky<=3;OrzZky++){
z=sin(OrzZky);
w=cos(OrzZky);
for(int i=1;i<=n;i++){
x_=x[i]*w-y[i]*z;
y_=x[i]*z+y[i]*w;
X=x[i];
Y=y[i];
X_=x_;
Y_=y_;
p[i].a[0]=X_;
p[i].a[1]=Y_;
p[i].a[2]=X;
p[i].a[3]=Y;
}
if(n==2){
printf("%lld\n",(x[1]-x[2])*(x[1]-x[2])+(y[1]-y[2])*(y[1]-y[2]));
return 0;
}
sort(p+1,p+n+1,cmp);
for(int i=n+1;i<=n+10;i++)p[i].a[0]=p[i].a[1]=-maxn-0.01;
for(int i=1;i<=n;i++){
for(int j=1;j<=60;j++){
X=p[i].a[2];
Y=p[i].a[3];
X_=p[i+j].a[2];
Y_=p[i+j].a[3];
z=(X-X_)*(X-X_)+(Y-Y_)*(Y-Y_);
if(ans>z&&z!=0)ans=z;
}
}
}
printf("%lld\n",ans);
return 0;
}