#include <bits/stdc++.h>
using namespace std;
const int ppr = 257;
const long long INF = 1e18;
const int inf = 1e9;
const int mod = 1e9 + 7;
const int N = 2e5 + 123;
const long double pi = 3.141592653589793238462643;
const int dx[] = {1, 0, -1, 0};
const int dy[] = {0, 1, 0, -1};
pair<int, int> p[105];
bool u[105];
int n, cnt;
void dfs(int i) {
  u[i] = 1;
  for (int j = 1; j <= n; j++) {
    if (!u[j] && (p[i].first == p[j].first || p[i].second == p[j].second))
      dfs(j);
  }
}
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> p[i].first >> p[i].second;
  for (int i = 1; i <= n; i++)
    if (!u[i]) {
      cnt++;
      dfs(i);
    }
  cnt--;
  cout << cnt;
  return 0;
}
