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: def append_p(p, xpeers_s, ypeers_s):
      x = p[X]
      if not x in xpeers_s:
          xpeers_s[x] = []
      xpeers_s[x].append(p)
  
      y = p[Y]
      if not y in ypeers_s:
          ypeers_s[y] = []
      ypeers_s[y].append(p)
  
  
  X = 0
  Y = 1
  n = int(input())
  p_set = set(tuple(int(v) for v in input().split()) for _ in range(n))
  xpeers_s = {}
  ypeers_s = {}
  for p in p_set:
      append_p(p, xpeers_s, ypeers_s)
  
  # print(p_set)
  # print(xpeers_s)
  # print(ypeers_s)
  # print("")
  ans = 0
  for _rep in range(10):
      # while True:
      repeat = False
      p_set_new = set()
      for p in p_set:
          x = p[X]
          y = p[Y]
          if (x in xpeers_s) and (y in ypeers_s):
              xpeers = xpeers_s[x]
              ypeers = ypeers_s[y]
              # print(xpeers, ypeers)
              for xpeer in xpeers:
                  for ypeer in ypeers:
                      dpeer = (ypeer[X], xpeer[Y])
                      # print(xpeer, ypeer)
                      if not dpeer in p_set:
                          ans += 1
                          repeat = True
                          p_set_new.add(dpeer)
  
      # print("repeat={}, ans={}".format(repeat, ans))
      p_set |= p_set_new
      for p_new in p_set_new:
          # print(p_new)
          append_p(p_new, xpeers_s, ypeers_s)
      if not repeat:
          break
  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."}]