var i,j,k,l,m,n,x1,y1,x2,y2,x0,y0,max,min,maxb,min1,min2:longint;
    x,y,a,b:array[0..100001]of longint;
procedure qs(l,r:longint);
  var
         i,j,x,y: longint;
      begin
         i:=l;
         j:=r;
         x:=a[(l+r) div 2];
         repeat
           while a[i]>x do
            inc(i);
           while x>a[j] do
            dec(j);
           if not(i>j) then
             begin
                y:=a[i];
                a[i]:=a[j];
                a[j]:=y;
                y:=b[i];
                b[i]:=b[j];
                b[j]:=y;
                inc(i);
                j:=j-1;
             end;
         until i>j;
         if l<j then
           qs(l,j);
         if i<r then
           qs(i,r);
      end;
begin
  //assign(input,'missile.in'); reset(input);
  //assign(output,'missile.out'); rewrite(output);
  fillchar(a,sizeof(a),0);
  fillchar(b,sizeof(b),0);
  read(x1,y1,x2,y2);
  read(n);
  for i:=1 to n do
    begin
      read(x0,y0);
      a[i]:=sqr(x0-x1)+sqr(y0-y1);
      b[i]:=sqr(x0-x2)+sqr(y0-y2);
    end;
  qs(1,n);
  maxb:=0; min:=a[1];
 for i:=2 to n+1 do
 begin
 if b[i-1]>maxb then maxb:=b[i-1];
 if a[i]+maxb<min then min:=a[i]+maxb;
 end;
 writeln(min);
  close(input); close(output);
end.

/**************************************************************
	Problem: 2294
	User: admin
	Language: Pascal
	Result: Wrong Answer
****************************************************************/