#include<cstdio>
#include<algorithm>
#include<cstring>
#include<set>
#include<vector>
#define MN 100005
using namespace std;
typedef long long ll;
int n,a,b,tx,ty,que[MN];bool vis[MN];
ll numx[MN],numy[MN],ans;
struct po{ll x,y;}q[MN];
struct node {
	ll val;int id;
	friend bool operator<(node x,node y){return x.val<y.val;}
};
set<node>sx[MN],sy[MN];
set<node>::iterator it;
vector<ll>ansx[MN],ansy[MN];
int main(){
//	freopen("test.txt","r",stdin);
//	freopen("mysol.out","w",stdout);
	scanf("%d%d%d",&n,&a,&b);
	for(int i=1;i<=n;i++)scanf("%lld%lld",&q[i].x,&q[i].y);
	ll dis=abs(q[a].x-q[b].x)+abs(q[a].y-q[b].y);
	for(int i=1;i<=n;i++){
		ll nowx=q[i].x-q[i].y,nowy=q[i].x+q[i].y;
		q[i].x=nowx,q[i].y=nowy;numx[++tx]=q[i].x,numy[++ty]=q[i].y;
	}sort(numx+1,numx+tx+1);sort(numy+1,numy+ty+1);tx=unique(numx+1,numx+tx+1)-numx,ty=unique(numy+1,numy+ty+1)-numy;
	for(int i=1;i<=n;i++){
		int nowx=lower_bound(numx+1,numx+tx,q[i].x)-numx,nowy=lower_bound(numy+1,numy+ty,q[i].y)-numy;
		sx[nowx].insert((node){q[i].y,i}),ansx[nowx].push_back(q[i].y);
		sy[nowy].insert((node){q[i].x,i}),ansy[nowy].push_back(q[i].x);
	}int h=1,t=1;que[h]=a;vis[a]=1;
	while(h<=t){
		int tmp=que[h++];
		if(numx[lower_bound(numx+1,numx+tx,q[tmp].x-dis)-numx]==q[tmp].x-dis){
			int nowx=lower_bound(numx+1,numx+tx,q[tmp].x-dis)-numx;it=sx[nowx].lower_bound((node){q[tmp].y-dis,0});
			while(it!=sx[nowx].end()&&(*it).val<=q[tmp].y+dis)
				(!vis[(*it).id])?(que[++t]=(*it).id,vis[(*it).id]=1):0,sx[nowx].erase(it),it=sx[nowx].lower_bound((node){q[tmp].y-dis,0});
		}
		if(numx[lower_bound(numx+1,numx+tx,q[tmp].x+dis)-numx]==q[tmp].x+dis){
			int nowx=lower_bound(numx+1,numx+tx,q[tmp].x+dis)-numx;it=sx[nowx].lower_bound((node){q[tmp].y-dis,0});
			while(it!=sx[nowx].end()&&(*it).val<=q[tmp].y+dis)
				(!vis[(*it).id])?(que[++t]=(*it).id,vis[(*it).id]=1):0,sx[nowx].erase(it),it=sx[nowx].lower_bound((node){q[tmp].y-dis,0});
		}
		if(numy[lower_bound(numy+1,numy+ty,q[tmp].y-dis)-numy]==q[tmp].y-dis){
			int nowy=lower_bound(numy+1,numy+ty,q[tmp].y-dis)-numy;it=sy[nowy].lower_bound((node){q[tmp].x-dis,0});
			while(it!=sy[nowy].end()&&(*it).val<=q[tmp].x+dis)
				(!vis[(*it).id])?(que[++t]=(*it).id,vis[(*it).id]=1):0,sy[nowy].erase(it),it=sy[nowy].lower_bound((node){q[tmp].x-dis,0});
		}
		if(numy[lower_bound(numy+1,numy+ty,q[tmp].y+dis)-numy]==q[tmp].y+dis){
			int nowy=lower_bound(numy+1,numy+ty,q[tmp].y+dis)-numy;it=sy[nowy].lower_bound((node){q[tmp].x-dis,0});
			while(it!=sy[nowy].end()&&(*it).val<=q[tmp].x+dis)
				(!vis[(*it).id])?(que[++t]=(*it).id,vis[(*it).id]=1):0,sy[nowy].erase(it),it=sy[nowy].lower_bound((node){q[tmp].x-dis,0});
		}
	}
	for(int i=1;i<=tx;i++)sort(ansx[i].begin(),ansx[i].end());
	for(int i=1;i<=ty;i++)sort(ansy[i].begin(),ansy[i].end());
	for(int i=1;i<=n;i++)if(vis[i]){
		int tmp=i;vector<ll>::iterator l,r;
		if(numx[lower_bound(numx+1,numx+tx,q[tmp].x-dis)-numx]==q[tmp].x-dis){
			int nowx=lower_bound(numx+1,numx+tx,q[tmp].x-dis)-numx;
			l=lower_bound(ansx[nowx].begin(),ansx[nowx].end(),q[tmp].y-dis),r=upper_bound(ansx[nowx].begin(),ansx[nowx].end(),q[tmp].y+dis)-1;
			if(r>=l)ans+=r-l+1,ans-=((*l)==q[tmp].y-dis)+((*r)==q[tmp].y+dis);
		}
		if(numx[lower_bound(numx+1,numx+tx,q[tmp].x+dis)-numx]==q[tmp].x+dis){
			int nowx=lower_bound(numx+1,numx+tx,q[tmp].x+dis)-numx;
			l=lower_bound(ansx[nowx].begin(),ansx[nowx].end(),q[tmp].y-dis),r=upper_bound(ansx[nowx].begin(),ansx[nowx].end(),q[tmp].y+dis)-1;
			if(r>=l)ans+=r-l+1,ans-=((*l)==q[tmp].y-dis)+((*r)==q[tmp].y+dis);
		}
		if(numy[lower_bound(numy+1,numy+ty,q[tmp].y-dis)-numy]==q[tmp].y-dis){
			int nowy=lower_bound(numy+1,numy+ty,q[tmp].y-dis)-numy;
			l=lower_bound(ansy[nowy].begin(),ansy[nowy].end(),q[tmp].x-dis),r=upper_bound(ansy[nowy].begin(),ansy[nowy].end(),q[tmp].x+dis)-1;
			ans+=r-l+1;
		}
		if(numy[lower_bound(numy+1,numy+ty,q[tmp].y+dis)-numy]==q[tmp].y+dis){
			int nowy=lower_bound(numy+1,numy+ty,q[tmp].y+dis)-numy;
			l=lower_bound(ansy[nowy].begin(),ansy[nowy].end(),q[tmp].x-dis),r=upper_bound(ansy[nowy].begin(),ansy[nowy].end(),q[tmp].x+dis)-1;
			ans+=r-l+1;
		}
	}printf("%lld\n",ans/2);
}

Measured memory_bytes: 35840