output_description: Print the answer.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      H W
      S_1
      S_2
      :
      S_H
attempt: import sys
  
  
  def 解():
      input = sys.stdin.readline
      H, W = [int(_) for _ in input().split()]
      aM = [""] * H
      for i in range(H):
          aM[i] = input().rstrip()
  
      adxy = [(0, 1), (1, 0), (-1, 0), (0, -1)]
      dsVBs = set()
  
      def bfsM(i, j):
          aS = [(i, j)]
          dsV = set()
          dsVB = set()
          iC = 0
          while aS:
              th, tw = aS[0]
              del aS[0]
              if aM[th][tw] == ".":
                  iC += 1
                  for dh, dw in adxy:
                      nh, nw = dh + th, dw + tw
                      nP = (nh, nw)
                      if 0 <= nh < H and 0 <= nw < W:
                          if aM[nh][nw] == "#" and nP not in dsV:
                              aS.append(nP)
                              dsV.add(nP)
                              dsVB.add(nP)
              else:
                  for dh, dw in adxy:
                      nh, nw = dh + th, dw + tw
                      nP = (nh, nw)
                      if 0 <= nh < H and 0 <= nw < W:
                          if aM[nh][nw] == "." and nP not in dsV:
                              aS.append(nP)
                              dsV.add(nP)
          iB = len(dsVB)
          for nP in dsVB:
              dsVBs.add(nP)
          return iC * iB
  
      iAns = 0
      for i in range(H):
          for j in range(W):
              if aM[i][j] == "#" and (i, j) not in dsVBs:
                  iAns += bfsM(i, j)
      print(iAns)
  
  
  解()
  
problem_description: Statement
  
  There is a grid with H rows and W columns, where each square is painted black
  or white.
  
  You are given H strings S_1, S_2, ..., S_H, each of length W. If the square at
  the i-th row from the top and the j-th column from the left is painted black,
  the j-th character in the string S_i is `#`; if that square is painted white,
  the j-th character in the string S_i is `.`.
  
  Find the number of pairs of a black square c_1 and a white square c_2 that
  satisfy the following condition:
  
    * There is a path from the square c_1 to the square c_2 where we repeatedly move to a vertically or horizontally adjacent square through an alternating sequence of black and white squares: black, white, black, white...
samples: [{"input": "3 3\n    .#.\n    ..#\n    #..", "output": "10\n    \n\nSome of the pairs satisfying the condition are ((1, 2), (3, 3)) and ((3, 1),\n(3, 2)), where (i, j) denotes the square at the i-th row from the top and the\nj-th column from the left.\n\n* * *"}, {"input": "2 4\n    ....\n    ....", "output": "0\n    \n\n* * *"}, {"input": "4 3\n    ###\n    ###\n    ...\n    ###", "output": "6"}]