#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
****************************************************************/