#include <bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
//#define int long long
set <int> s_x;
vector <int> s_y;
map <int,vector <int> > mp_x,mp_y;
int n,x[2005],y[2005];
int main(){
cin>>n;
int gx=0,gy=0;
for(int i=1;i<=n;i++){
cin>>x[i]>>y[i];
}
vector <pair <int,int> > vec;
vec.pb({0,0});
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(make_pair(y[i],i)<make_pair(y[j],j)){
vec.pb({x[j]-x[i],y[j]-y[i]});
}
}
}
for(auto u:vec){
s_x.insert(u.ff);
mp_x[u.ff].pb(u.ss);
}
for(auto u:s_x){
sort(mp_x[u].begin(),mp_x[u].end());
for(int i=1;i<mp_x[u].size();i++){
gx=__gcd(gx,mp_x[u][i]-mp_x[u][i-1]);
}
}
if(gx==0){
cout<<-1<<endl;
return 0;
}
for(auto u:vec){
s_y.pb(u.ss);
}
sort(s_y.begin(),s_y.end());
for(int i=1;i<s_y.size();i++){
gy=__gcd(gy,s_y[i]-s_y[i-1]);
}
if(gy==0){
cout<<-1<<endl;
return 0;
}
cout<<gx*gy<<endl;
}