i,j,k:longint;
x1,y1,x2,y2,n:longint;
a,b:array[0..100001] of longint;
f:array[0..100001] of longint;
tx,ty:longint;
ans:longint;
function max(a,b:longint):longint;
begin
if a>b then exit(a);
exit(b);
end;
procedure swap(var x,y:longint);
var t:longint;
begin
t:=x;x:=y;y:=t;
end;
procedure qsort(l,r:longint);
var
i,j,m1,m2:longint;
begin
i:=l;
j:=r;
m1:=a[(l+r)div 2];
m2:=b[(l+r)div 2];
repeat
while ((a[i]<m1)or((a[i]=m1)and(b[i]<m2))) do inc(i);
while ((a[j]>m1)or((a[j]=m1)and(b[j]>m2))) do dec(j);
if i<=j then
begin
swap(a[i],a[j]);
swap(b[i],b[j]);
inc(i); dec(j);
end;
until i>j
if l<j then qsort(l,j);
if r>i then qsort(i,r);
end;
begin
fillchar(a,sizeof(a),0);
fillchar(b,sizeof(b),0);
fillchar(f,sizeof(f),0);
read(x1,y1,x2,y2);
read(n);
for i:=1 to n do
begin
read(tx,ty);
a[i]:=sqr(tx-x1)+sqr(ty-y1);
b[i]:=sqr(tx-x2)+sqr(ty-y2);
end;
qsort(1,n);
for i:=n downto 1 do
f[i]:=max(b[i],f[i+1]);
ans:=maxlongint;
for i:=1 to n+1 do
if ans>f[i]+a[i-1] then
ans:=f[i]+a[i-1];
writeln(ans);
end.
(对不起啊,没有空格,看起来可能有点不舒服)