#include<bits/stdc++.h>

using namespace std;

int sol, Konst, N, x[100009], y[100009];
pair < int, int > h[100009];

const int hashMod = 100007;
vector < pair < int, int > > hsh[hashMod];
int key (pair < int, int > v) {int ans = (v.first ^ 7542377 + v.second^
2552875)%hashMod;if (ans < 0) ans += hashMod; return ans;}
void Push (pair < int, int > x) {hsh[key (x)].push_back (x);}
bool Qry (pair < int, int > x) {int lin = key (x); for(auto it = hsh[lin].begin ();
it != hsh[lin].end (); it ++)if (*it == x) return 1; return 0;}

void solve (bool type)
{
    for (int i=1; i<=N; i++)
    {
        int j, diag = h[i].first;
        for (j=i; j<=N; j++)
            if (h[j].first != h[i].first) break;
        j --;
        ///
        if (j - i + 1 <= Konst)
        {
            for (int k=i; k<=j; k++)
                for (int p=k + 1; p<=j; p++)
                {
                    int p1 = h[k].second, p2 = h[p].second;
                    if (!type)
                        sol += ((x[p1] + y[p2] != diag) & Qry ({x[p1], y[p2]})),
                        sol += ((x[p2] + y[p1] != diag) & Qry ({x[p2], y[p1]}));
                    else
                        sol += ((x[p1] - y[p2] != diag) & Qry ({x[p1], y[p2]})),
                        sol += ((x[p2] - y[p1] != diag) & Qry ({x[p2], y[p1]}));
                }
        }
        else
        {
            if (!type)
                for (int k=1; k<=N; k++)
                {
                    if (x[k] + y[k] != diag)
                        sol += (Qry ({x[k], diag - x[k]}) & Qry ({diag - y[k], y[k]}));
                }
            else
                for (int k=1; k<=N; k++)
                {
                    if (x[k] - y[k] != diag)
                        sol += (Qry ({x[k], x[k] - diag}) & Qry ({diag + y[k], y[k]}));
                }
        }
        ///
        i = j;
    }
}

int main ()
{
//freopen ("input", "r", stdin);
//freopen ("output", "w", stdout);

scanf ("%d", &N);
while (Konst * Konst <= N) Konst ++;
Konst = 1;
for (int i=1; i<=N; i++)
    scanf ("%d %d", &x[i], &y[i]), Push ({x[i], y[i]}), h[i] = make_pair (x[i] + y[i], i);
sort (h + 1, h + N + 1), solve (0);
for (int i=1; i<=N; i++)
    h[i] = make_pair (x[i] - y[i], i);
sort (h + 1, h + N + 1), solve (1);
printf ("%d\n", sol);
return 0;
}