#include <iostream>
#include <fstream>
#include <vector>
#include <unordered_map>
#include <set>
#include <algorithm>

using namespace std;

unordered_map<int, vector<int> > line;
unordered_map<int, vector<int> > col;
set<pair<int, int> > v;
int rasp;

void citire()
{
    int n;
    cin >> n;
    int x, y;
    for(int i = 1; i <= n; ++i)
    {
        cin >> x >> y;
        line[x].push_back(y);
        col[y].push_back(x);
        v.insert(make_pair(x, y));
    }
}

void rezolvare()
{
    int difX, difY;
    for(auto &p:v)
    {
        if(line[p.first].size() < col[p.second].size())
        {
            for(auto y:line[p.first])
                if(y != p.second)
                {
                    difY = abs(p.second - y);
                    if(v.find(make_pair(p.first + difY, p.second)) != v.end())
                        rasp++;
                    if(v.find(make_pair(p.first - difY, p.second)) != v.end())
                        rasp++;
                }
        }
        else
        {
            for(auto x:col[p.second])
                if(x != p.first)
                {
                    difX = abs(p.first - x);
                    if(v.find(make_pair(p.first, p.second + difX)) != v.end())
                        rasp++;
                    if(v.find(make_pair(p.first, p.second - difX)) != v.end())
                        rasp++;
                }
        }
    }
    cout << rasp;
}

int main()
{
    citire();
    rezolvare();
    return 0;
}