#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<int, pii> pipii;
typedef pair<pii, int> piipi;
typedef pair<pii, pii> piipii;
typedef pair<ll, ll> pll;

#define mp make_pair
#define fi first
#define se second
#define all(a) (a).begin(), (a).end()
#define sz(a) (int)(a).size()
#define eb emplace_back

int X[100005], Y[100005];
bool vis[100005];
multiset<piipi> dx, dy;
ll d;
void dfs(int u){
    vis[u] = 1;
    dx.erase(mp(mp(X[u], Y[u]), u));
    dy.erase(mp(mp(Y[u], X[u]), u));

    while(1){
        auto it = dx.lower_bound(mp(mp(X[u]-d, Y[u]-d), 0));
        if(it != dx.end() && it->fi.fi == X[u]-d && it->fi.se <= Y[u]+d) dfs(it->se);
        else break;
    }
    while(1){
        auto it = dx.lower_bound(mp(mp(X[u]+d, Y[u]-d), 0));
        if(it != dx.end() && it->fi.fi == X[u]+d && it->fi.se <= Y[u]+d) dfs(it->se);
        else break;
    }
    while(1){
        auto it = dy.lower_bound(mp(mp(Y[u]-d, X[u]-d), 0));
        if(it != dy.end() && it->fi.fi == Y[u]-d && it->fi.se <= X[u]+d) dfs(it->se);
        else break;
    }
    while(1){
        auto it = dy.lower_bound(mp(mp(Y[u]+d, X[u]-d), 0));
        if(it != dy.end() && it->fi.fi == Y[u]+d && it->fi.se <= X[u]+d) dfs(it->se);
        else break;
    }
}
int main(){
    int n, a, b, x, y;
    scanf("%d%d%d", &n, &a, &b);
    for(int i=1;i<=n;i++){
        scanf("%d%d", &x, &y);
        X[i] = x+y;
        Y[i] = x-y;
        dx.insert(mp(mp(X[i], Y[i]), i));
        dy.insert(mp(mp(Y[i], X[i]), i));
    }

    d = max(abs(X[a]-X[b]), abs(Y[a]-Y[b]));
    dfs(a);

    vector<pll> v1, v2;
    for(int i=1;i<=n;i++){
        if(vis[i]){
            v1.eb(mp(X[i], Y[i]));
            v2.eb(mp(Y[i], X[i]));
        }
    }
    sort(all(v1));
    sort(all(v2));
    ll ans = 0;
    for(int i=1;i<=n;i++){
        if(vis[i]){
            ans += (upper_bound(all(v1), mp(X[i]-d, Y[i]+d)) - v1.begin()) - (lower_bound(all(v1), mp(X[i]-d, Y[i]-d+1)) - v1.begin());
            ans += (upper_bound(all(v1), mp(X[i]+d, Y[i]+d)) - v1.begin()) - (lower_bound(all(v1), mp(X[i]+d, Y[i]-d+1)) - v1.begin());
            ans += (upper_bound(all(v2), mp(Y[i]-d, X[i]+d)) - v2.begin()) - (lower_bound(all(v2), mp(Y[i]-d, X[i]-d)) - v2.begin());
            ans += (upper_bound(all(v2), mp(Y[i]+d, X[i]+d-1)) - v2.begin()) - (lower_bound(all(v2), mp(Y[i]+d, X[i]-d+1)) - v2.begin());
        }
    }
    printf("%lld\n", ans/2);
}