output_description: Print the maximum number of times we can do the operation.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      x_1 y_1
      :
      x_N y_N
attempt: import sys
  from collections import defaultdict
  import queue
  
  n = int(sys.stdin.readline())
  
  graph = defaultdict(list)
  
  X, Y = [[] for i in range(n)], [[] for i in range(n)]
  atX, atY = defaultdict(list), defaultdict(list)
  
  for i in range(n):
      a, b = map(int, sys.stdin.readline().split())
      a -= 1
      b -= 1
      X[i] = a
      Y[i] = b
      atX[X[i]].append(i)
      atY[Y[i]].append(i)
  
  visX = set()
  visY = set()
  found = [False] * n
  
  ans = n * (-1)
  for root in range(n):
      if found[root]:
          continue
      usedX, usedY = set(), set()
  
      que = queue.Queue()
      que.put(root)
      found[root] = True
      usedX.add(X[root])
      usedY.add(Y[root])
  
      while not que.empty():
          cur = que.get()
          toVisit = []
          if X[cur] not in visX:
              visX.add(X[cur])
              for ele in atX[X[cur]]:
                  toVisit.append(ele)
          if Y[cur] not in visY:
              visY.add(Y[cur])
              for ele in atY[Y[cur]]:
                  toVisit.append(ele)
  
          for ele in toVisit:
              if found[ele]:
                  continue
              found[ele] = True
              usedX.add(X[ele])
              usedY.add(Y[ele])
              que.put(ele)
      ans += len(usedX) * len(usedY)
  print(ans)
  
problem_description: Statement
  
  There are N dots in a two-dimensional plane. The coordinates of the i-th dot
  are (x_i, y_i).
  
  We will repeat the following operation as long as possible:
  
    * Choose four integers a, b, c, d (a \neq c, b \neq d) such that there are dots at exactly three of the positions (a, b), (a, d), (c, b) and (c, d), and add a dot at the remaining position.
  
  We can prove that we can only do this operation a finite number of times. Find
  the maximum number of times we can do the operation.
samples: [{"input": "3\n    1 1\n    5 1\n    5 5", "output": "1\n    \n\nBy choosing a = 1, b = 1, c = 5, d = 5, we can add a dot at (1, 5). We cannot\ndo the operation any more, so the maximum number of operations is 1.\n\n* * *"}, {"input": "2\n    10 10\n    20 20", "output": "0\n    \n\nThere are only two dots, so we cannot do the operation at all.\n\n* * *"}, {"input": "9\n    1 1\n    2 1\n    3 1\n    4 1\n    5 1\n    1 2\n    1 3\n    1 4\n    1 5", "output": "16\n    \n\nWe can do the operation for all choices of the form a = 1, b = 1, c = i, d = j\n(2 \\leq i,j \\leq 5), and no more. Thus, the maximum number of operations is\n16."}]