#include <stdio.h>
#include <vector>
#include <set>
#include <map>
#include <algorithm>
using namespace std;
int n, res, r;
set < pair<int, int> > S;
map <int, int> X, Y;
int main() {
scanf("%d",&n);
pair <int, int> P;
for (int i = 0; i < n; i++) {
scanf("%d%d",&P.first,&P.second);
if (S.count(P)) res = -1;
else S.insert(P);
X[P.first]++;
Y[P.second]++;
}
if (res == -1) printf("-1");
else {
res = 0;
for (map<int,int>::iterator I = X.begin(); I != X.end(); I++) {
r = (*I).second;
res += (r>=2);
}
for (map<int,int>::iterator I = Y.begin(); I != Y.end(); I++) {
r = (*I).second;
res += (r>=2);
}
printf("%d",res);
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxhbGdvcml0aG0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBuLCByZXMsIHI7CnNldCA8IHBhaXI8aW50LCBpbnQ+ID4gUzsKbWFwIDxpbnQsIGludD4gWCwgWTsKaW50IG1haW4oKSB7CglzY2FuZigiJWQiLCZuKTsKCXBhaXIgPGludCwgaW50PiBQOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKCQlzY2FuZigiJWQlZCIsJlAuZmlyc3QsJlAuc2Vjb25kKTsKCQlpZiAoUy5jb3VudChQKSkgcmVzID0gLTE7CgkJZWxzZSBTLmluc2VydChQKTsKCQlYW1AuZmlyc3RdKys7CgkJWVtQLnNlY29uZF0rKzsKCX0KCWlmIChyZXMgPT0gLTEpIHByaW50ZigiLTEiKTsKCWVsc2UgewoJCXJlcyA9IDA7CgkJZm9yIChtYXA8aW50LGludD46Oml0ZXJhdG9yIEkgPSBYLmJlZ2luKCk7IEkgIT0gWC5lbmQoKTsgSSsrKSB7CgkJCXIgPSAoKkkpLnNlY29uZDsKCQkJcmVzICs9IChyPj0yKTsKCQl9CgkJZm9yIChtYXA8aW50LGludD46Oml0ZXJhdG9yIEkgPSBZLmJlZ2luKCk7IEkgIT0gWS5lbmQoKTsgSSsrKSB7CgkJCXIgPSAoKkkpLnNlY29uZDsKCQkJcmVzICs9IChyPj0yKTsKCQl9CgkJcHJpbnRmKCIlZCIscmVzKTsKCX0KCXJldHVybiAwOwp9