#include <bits/stdc++.h>
using namespace std;
pair<long long, int> G[100];
int T[100];
int N, r, r2;
int c = 0;
void explore(int u) {
  if (T[u]) {
    return;
  }
  T[u] = c;
  for (int i = 0; i < N; i++) {
    if (i == u) continue;
    if (!T[i] && (G[i].first == G[u].first || G[i].second == G[u].second)) {
      explore(i);
    }
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin >> N;
  for (int i = 0; i < N; i++) {
    cin >> r >> r2;
    r--;
    r2--;
    G[i] = make_pair(r, r2);
  }
  for (int i = 0; i < N; i++) {
    if (!T[i]) c++;
    explore(i);
  }
  cout << c - 1;
  return 0;
}
