#include <bits/stdc++.h>
using namespace std;
int n;
int od1,do1,od2,do2;
long long rez;
long long a,b;
struct slog{
    int x,y;
    bool koriscena=false;
}tacka[1505];
bool cmp1(slog a, slog b){
    return a.x<b.x;
}
bool cmp2(slog a, slog b){
    return a.y<b.y;
}
void resi(){
    sort(tacka+1,tacka+1+n,cmp1);
    for(int i=1;i<=n;i++){
        od1=max(1,(i-2));
        do1=min((i+2),n);
        for(int j=od1;j<=do1;j++){
            for(int k=1;k<=n;k++){
                od2=max(1,(k-2));
                do2=min((k+2),n);
                for(int g=od2;g<=do2;g++){
                    if(i!=j and i!=k and i!=g and j!=k and j!=g and k!=g){
                            if(tacka[i].koriscena==false or tacka[j].koriscena==false or
                            tacka[k].koriscena==false or tacka[g].koriscena==false){

                            if((tacka[i].x==tacka[j].x) and (tacka[k].x==tacka[g].x)){
                                a=abs(tacka[i].y-tacka[j].y);
                                b=abs(tacka[k].y-tacka[g].y);
                                if(b==(2*a) or a==(2*b)){
                                    rez++;
                                    tacka[i].koriscena=true;
                                    tacka[j].koriscena=true;
                                    tacka[k].koriscena=true;
                                    tacka[g].koriscena=true;
//                                    cout<<tacka[i].x<<" "<<tacka[j].x<<" "<<tacka[k].x<<" "<<tacka[g].x<<endl;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    sort(tacka+1,tacka+1+n,cmp2);
    for(int i=1;i<=n;i++){
        od1=max(1,(i-2));
        do1=min((i+2),n);
        for(int j=od1;j<=do1;j++){
            for(int k=1;k<=n;k++){
                od2=max(1,(k-2));
                do2=min((k+2),n);
                for(int g=od2;g<=do2;g++){
                    if(i!=j and i!=k and i!=g and j!=k and j!=g and k!=g){
                            if(tacka[i].koriscena==false or tacka[j].koriscena==false or
                            tacka[k].koriscena==false or tacka[g].koriscena==false){

                            if((tacka[i].y==tacka[j].y) and (tacka[k].y==tacka[g].y)){
                                a=abs(tacka[i].x-tacka[j].x);
                                b=abs(tacka[k].x-tacka[g].x);
                                if(b==(2*a) or a==(2*b)){
                                    rez++;
                                    tacka[i].koriscena=true;
                                    tacka[j].koriscena=true;
                                    tacka[k].koriscena=true;
                                    tacka[g].koriscena=true;
//                                    cout<<tacka[i].x<<" "<<tacka[j].x<<" "<<tacka[k].x<<" "<<tacka[g].x<<endl;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
int main(){
    scanf("%d", &n);
    for(int i=1;i<=n;i++){
        scanf("%d %d", &tacka[i].x, &tacka[i].y);
    }
    resi();
    printf("%lld\n", rez);

return 0;}