/*
TASK:dist
LANG:C++
*/
#include<iostream>
#include<cmath>
using namespace std;
int n;
/*
// Graham scan + Dist to Segment
// if n < 800 Brute Force => za sega mislq 4e e po-sigurno :P
/// This was stiuped Dist to Point not to segment
*/
struct point
{
       int x;
       int y;
       int next;
}pin[5004],tmp;
int D(point a,point b,point c)
{
    return (a.x*b.y + b.x*c.y + a.y*c.x) - (a.x*c.y + a.y*b.x + b.y*c.x);  
}
int cmpsp(point a,point b)
{
    int x1 = a.x - pin[1].x;
    int y1 = a.y - pin[1].y;
    int x2 = b.x - pin[1].x;
    int y2 = b.y - pin[1].y;
    return x1*y2 - x2*y1;
}
void graham()
{
     sort(pin + 1,pin + n,cmpsp);
}
int dist(point A,point B)
{
    return sqrt((A.x - B.x)*(A.x - B.x) + (A.y - B.y)*(A.y - B.y));
}
int p,c1,c2;
long mik = 1000000000,k;
int main()
{
    int i;
    int minn = 1;
    scanf("%d",&n);
    scanf("%d %d",&pin[0].x,&pin[0].y);
    for(i = 1;i <= n;i++)
    {
          scanf("%d %d",&pin[i].x,&pin[i].y);
          if(pin[i].x < pin[minn].x)
          {
                      minn = i;
          }
    }
    tmp.x = pin[1].x;
    tmp.y = pin[1].y;
    pin[1].x = pin[minn].x;
    pin[1].y = pin[minn].y;
    pin[minn].x = tmp.x;
    pin[minn].y = tmp.y;
    graham();
    for(i = 1;i < n;i++)
    {
          pin[i].next = i+1;
    }
    pin[n].next = 1;
    for(i = 0;i < n;i++)
    {
          if(D(pin[i],pin[pin[i].next],pin[pin[pin[i].next].next]) < 0)
          {
                         pin[i].next = pin[pin[i].next].next;
          }
    }
    for(i = 1;;)
    {
          if(pin[i].next == 1)
          {
                         if(dist(pin[0],pin[i]) < mik)
                         {
                                                printf("%d\n",dist(pin[0],pin[i]));
                                                return 0;
                         }
                         else printf("%d\n",mik);
                         return 0;
          }
          if(dist(pin[0],pin[i]) < mik)
          {
                                 mik = dist(pin[0],pin[i]);
          }
          i = pin[i].next;
    }
    return 0;
}
