#include <bits/stdc++.h>
using namespace std;
int visit[101];
int main() {
  int n, m;
  scanf("%d", &n);
  int x[n], y[n];
  int i;
  for (i = 0; i < n; i++) {
    scanf("%d%d", &x[i], &y[i]);
  }
  int cnt = 0;
  for (i = 0; i < n; i++) {
    queue<int> que;
    if (!visit[i]) {
      visit[i] = 1;
      cnt++;
      que.push(i);
      while (!que.empty()) {
        int cur = que.front();
        que.pop();
        for (int j = 0; j < n; j++) {
          if (!visit[j]) {
            if (x[j] == x[cur] || y[j] == y[cur]) {
              visit[j] = 1;
              que.push(j);
            }
          }
        }
      }
    }
  }
  printf("%d\n", cnt - 1);
  return 0;
}
