// Crt. 2019-12-08  16:20:58
// Stt. 2019-12-08  20:14:00
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <queue>
#include <vector>
#include <set>
#include <map>
#define N 100005
using namespace std;
const long long pw = 1e9;

inline int Abs(int x) { return x < 0 ? -x : x; }

int n, x[N], y[N], cx, cy, vis[N];
long long ans;
map<int, int> idx, idy;
map<long long, int> id;
set<int> px[N], py[N];
queue<int> q;
vector<int> vx[N], vy[N];
bool okx[N], oky[N];

inline void calc(int a, int b, int l, int r, set<int>* p, int op, vector<int>* v) {
    if (!a) return ;
    set<int>::iterator it, en, tmp;
    it = p[a].lower_bound(l);
    en = p[a].upper_bound(r);
    ans += upper_bound(v[a].begin(), v[a].end(), r) - lower_bound(v[a].begin(), v[a].end(), l);
    while (it != en) {
        int now = id[!op ? (pw * b) + (*it) : (pw * (*it) + b)];
        //cout << now << " " << b << " " << (*it) << endl;
        vis[now] = 1;
        q.push(now);
        if (!op) py[idy[*it]].erase(b);
        else px[idx[*it]].erase(b);
        tmp = it++;
        p[a].erase(tmp);
    }
}

int main() {
#ifdef LOCAL_JUDGE
    freopen("work.in", "r", stdin);
    freopen("work.out", "w", stdout);
#endif

    int a, b;
    cin >> n >> a >> b;

    for (int i = 1, u, v; i <= n; ++i) {
        scanf("%d%d", &u, &v);
        x[i] = u + v, y[i] = u - v;
        id[pw * x[i] + y[i]] = i;
        if (!idx[x[i]]) idx[x[i]] = ++cx;
        if (!idy[y[i]]) idy[y[i]] = ++cy;
        px[idx[x[i]]].insert(y[i]);
        py[idy[y[i]]].insert(x[i]);
        vx[idx[x[i]]].push_back(y[i]);
        vy[idy[y[i]]].push_back(x[i]);
    }
    
    for (int i = 1, now; i <= n; ++i) {
        now = idx[x[i]];
        if (!okx[now]) okx[now] = 1, sort(vx[now].begin(), vx[now].end());
        now = idy[y[i]];
        if (!oky[now]) oky[now] = 1, sort(vy[now].begin(), vy[now].end());
    }

    q.push(a), vis[a] = 1;
    int d = max(Abs(x[b] - x[a]), Abs(y[b] - y[a]));
    px[idx[x[a]]].erase(y[a]);
    py[idy[y[a]]].erase(x[a]);

    while (!q.empty()) {
        int u = q.front(); q.pop();
        //cout << " # " << u << " : \n";
        calc(idx[x[u] - d], x[u] - d, y[u] - d + 1, y[u] + d, px, 0, vx);
        calc(idx[x[u] + d], x[u] + d, y[u] - d, y[u] + d - 1, px, 0, vx);
        calc(idy[y[u] - d], y[u] - d, x[u] - d, x[u] + d - 1, py, 1, vy);
        calc(idy[y[u] + d], y[u] + d, x[u] - d + 1, x[u] + d, py, 1, vy);
        //cout << " ------ \n";
    }

    cout << (ans >> 1) << endl;

    return 0;
}
