#include <iostream>
#include <vector>
#include <math.h>

using namespace std;

struct tacka{
    float x, y;
};

struct duz{
    float m, n, duzina;  
};

struct vertikalnaDuz{
    float x, duzina;  
};

int main()
{
    int n, kolicina = 0;
    cin >> n;
    
    tacka T;
    vertikalnaDuz VD;
    duz D;
    
    vector<tacka> vT;
    vector<vertikalnaDuz> vVD;
    vector<duz> vD;
    
    for(int i = 0; i < n; i++)
    {
        cin >> T.x >> T.y;
        vT.push_back(T);
    }
    
    for(int i = 0; i < n - 1; i++)
    {
        for(int j = i + 1; j < n; j++)
        {
            if(vT[i].x == vT[j].x)
            {
                VD.x = vT[i].x;
                VD.duzina = abs(vT[i].y - vT[j].y);
                
                vVD.push_back(VD);
            }
            else
            {
                if(vT[i].y == vT[j]. y)
                    D.m = 0;
                else
                    D.m = (vT[i].y - vT[j].y) / (vT[i].x - vT[j].x);
                
                D.n = vT[i].y - D.m * vT[i].x;
                D.duzina = sqrt((vT[i].x - vT[j].x) * (vT[i].x - vT[j].x) + (vT[i].y - vT[j].y) * (vT[i].y - vT[j].y));
            
                vD.push_back(D);
            }
        }
    }
    
    for(int i = 0; i < vVD.size() - 1; i++)
        for(int j = i + 1; j < vVD.size(); j++)
            if(vVD[i].x != vVD[j].x)
                if(vVD[i].duzina * 2 == vVD[j].duzina || vVD[j].duzina * 2 == vVD[i].duzina)
                    kolicina++;
                    
    for(int i = 0; i < vD.size() - 1; i++)
        for(int j = i + 1; j < vD.size(); j++)
            if(vD[i].m == vD[j].m && vD[i].n != vD[j].n)
                if(vD[i].duzina * 2 == vD[j].duzina || vD[j].duzina * 2 == vD[i].duzina)
                    kolicina++;
                    
    cout << kolicina;
}