#include<iostream>
#include<map>
using namespace std;
typedef long ll;
map<pair<ll,ll>,bool> exist;
int main()
{
int n;
cin>>n;
ll a[n+1][2];
int i;
for(i=0;i<n;i++)
{
cin>>a[i][0]>>a[i][1];
exist[make_pair(a[i][0],a[i][1])]=1;
}
if(n==0)
cout<<"4"<<endl;
else if(n==1)
cout<<"3"<<endl;
else if(n==2)
cout<<"2"<<endl;
else
{
int j,x1,x2,x3,x4,y1,y2,y3,y4;
int cnt=0;
for(i=0;i<n;i++)
{
x1=a[i][0];
y1=a[i][1];
int p=0,q=0,f=0;
for(j=i+1;j<n;j++)
{
x2=a[j][0];
y2=a[j][1];
//clockwise rotation
x3=x1-(y2-y1);
y3=y1+(x2-x1);
x4=x2- (y2-y1);
y4=y2+(x2-x1);
if(exist[make_pair(x3,y3)])
p=1;
if(exist[make_pair(x4,y4)])
q=1;
if(p&&q)
{
cnt=0;
f=1;
break;
}
else if(p||q)
cnt=1;
else cnt=2;
// anticlockwise rotation
x3=x1+(y2-y1);
y3=y1+(x1-x2);
x4=x2+(y2-y1);
y4=y2+(x1-x2);
if(exist[make_pair(x3,y3)])
p=1;
if(exist[make_pair(x4,y4)])
q=1;
if(p&&q)
{
cnt=0;
f=1;
break;
}
else if(p||q)
cnt=1;
else cnt=2;
}
if(f)
break;
}
cout<<cnt<<endl;
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPG1hcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsbDsKCm1hcDxwYWlyPGxsLGxsPixib29sPiBleGlzdDsKCmludCBtYWluKCkKewogICAgaW50IG47CiAgICBjaW4+Pm47CiAgICBsbCBhW24rMV1bMl07CiAgICBpbnQgaTsKICAgIGZvcihpPTA7aTxuO2krKykKICAgIHsKICAgICAgICBjaW4+PmFbaV1bMF0+PmFbaV1bMV07CiAgICAgICAgZXhpc3RbbWFrZV9wYWlyKGFbaV1bMF0sYVtpXVsxXSldPTE7CiAgICB9CiAgICAKICAgIGlmKG49PTApCiAgICBjb3V0PDwiNCI8PGVuZGw7CiAgICBlbHNlIGlmKG49PTEpCiAgICBjb3V0PDwiMyI8PGVuZGw7CiAgICBlbHNlIGlmKG49PTIpCiAgICBjb3V0PDwiMiI8PGVuZGw7CiAgICBlbHNlCiAgICB7CiAgICAgICAgaW50IGoseDEseDIseDMseDQseTEseTIseTMseTQ7CiAgICAgICAgaW50IGNudD0wOwogICAgICAgIGZvcihpPTA7aTxuO2krKykKICAgICAgICB7CiAgICAgICAgICAgIHgxPWFbaV1bMF07CiAgICAgICAgICAgIHkxPWFbaV1bMV07CiAgICAgICAgICAgIGludCBwPTAscT0wLGY9MDsKICAgICAgICAgICAgZm9yKGo9aSsxO2o8bjtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHgyPWFbal1bMF07CiAgICAgICAgICAgICAgICB5Mj1hW2pdWzFdOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvL2Nsb2Nrd2lzZSByb3RhdGlvbgogICAgICAgICAgICAgICAgeDM9eDEtKHkyLXkxKTsKICAgICAgICAgICAgICAgIHkzPXkxKyh4Mi14MSk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHg0PXgyLSAoeTIteTEpOwogICAgICAgICAgICAgICAgeTQ9eTIrKHgyLXgxKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYoZXhpc3RbbWFrZV9wYWlyKHgzLHkzKV0pCiAgICAgICAgICAgICAgICBwPTE7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmKGV4aXN0W21ha2VfcGFpcih4NCx5NCldKQogICAgICAgICAgICAgICAgcT0xOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZihwJiZxKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNudD0wOwogICAgICAgICAgICAgICAgICAgIGY9MTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYocHx8cSkKICAgICAgICAgICAgICAgICBjbnQ9MTsKICAgICAgICAgICAgICAgIGVsc2UgY250PTI7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBhbnRpY2xvY2t3aXNlIHJvdGF0aW9uCiAgICAgICAgICAgICAgICB4Mz14MSsoeTIteTEpOwogICAgICAgICAgICAgICAgeTM9eTErKHgxLXgyKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgeDQ9eDIrKHkyLXkxKTsKICAgICAgICAgICAgICAgIHk0PXkyKyh4MS14Mik7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmKGV4aXN0W21ha2VfcGFpcih4Myx5MyldKQogICAgICAgICAgICAgICAgcD0xOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZihleGlzdFttYWtlX3BhaXIoeDQseTQpXSkKICAgICAgICAgICAgICAgIHE9MTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYocCYmcSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjbnQ9MDsKICAgICAgICAgICAgICAgICAgICBmPTE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmKHB8fHEpCiAgICAgICAgICAgICAgICAgY250PTE7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBlbHNlIGNudD0yOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBpZihmKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgY291dDw8Y250PDxlbmRsOwogICAgfQogICAgcmV0dXJuIDA7Cn0K