#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
const int N(100009);
struct missle{
int dis;int no;
};
missle Sys1[N];
int Sys2[N]={0};
int cal(int x1,int y1,int x2,int y2)
{
return pow((double)(x1-x2),2.0)+pow((double)(y1-y2),2.0);
}
bool comp(const missle &x,const missle &y)
{
return x.dis>y.dis;
}
int main()
{
int x1,y1,x2,y2,n,t1(0),t2(0),ans(0);
cin>>x1>>y1>>x2>>y2>>n;
int x,y;
for(int i=1;i<=n;i++)
{
scanf("%d%d",&x,&y);
Sys1[i].no=i;
Sys1[i].dis=cal(x1,y1,x,y);
Sys2[i]=cal(x2,y2,x,y);
}
sort(Sys1+1,Sys1+n+1,comp);
t1=Sys1[1].dis; t2=0;
int tmax(0);
ans=t1+t2;
for(int i=1;i<=n;i++)
{
ans=min(ans,t1+t2);
t2=max(t2,Sys2[Sys1[i].no]);
t1=Sys1[i+1].dis;
}
cout<<ans<<endl;
return 0;
}
/**************************************************************
Problem: 2294
User: admin
Language: C++
Result: Accepted
Time:156 ms
Memory:3248 kb
****************************************************************/