#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-6;
const double pi = acos(-1.0);
template <class Z>
inline bool checkmax(Z &a, Z b) {
  if (a == -1 || a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class Z>
inline bool checkmin(Z &a, Z b) {
  if (a == -1 || a > b) {
    a = b;
    return true;
  }
  return false;
}
template <class Z>
inline bool mymax(Z &a, Z b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class Z>
inline bool mymin(Z &a, Z b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
int cas = 1;
void printcase() { printf("Case %d: ", cas++); }
map<int, int> a, b, cc;
void init() {
  a.clear();
  b.clear();
  cc.clear();
}
int main() {
  int n;
  while (~scanf("%d", &n)) {
    init();
    for (int i = 0; i < n; i++) {
      int c, d;
      scanf("%d%d", &c, &d);
      a[c]++;
      b[d]++;
      if (c == d) cc[c]++;
    }
    int ans = 0x7f7f7f7f;
    map<int, int>::iterator i;
    for (i = a.begin(); i != a.end(); i++) {
      int num = i->first;
      int c = i->second;
      if (c >= (n + 1) / 2) {
        ans = 0;
        break;
      } else if (c + b[num] - cc[num] >= (n + 1) / 2) {
        ans = min(ans, (n + 1) / 2 - c);
      }
    }
    if (ans == 0x7f7f7f7f) {
      for (i = b.begin(); i != b.end(); i++) {
        int c = i->second;
        if (c >= (n + 1) / 2) {
          ans = (n + 1) / 2;
          break;
        }
      }
      if (ans == 0x7f7f7f7f)
        puts("-1");
      else
        printf("%d\n", ans);
    } else
      printf("%d\n", ans);
  }
}
