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: H, W = map(int, input().split())
  grid = [-1] * (W + 4) * 2
  black_ind = []
  for _ in range(H):
      grid += [-1] * 2
      I = input()
      for i in range(W):
          if I[i] == "#":
              grid.append(1)
              black_ind.append(len(grid) - 1)
          else:
              grid.append(0)
      grid += [-1] * 2
  
  grid += [-1] * (W + 4) * 2
  
  move = [1, -1, W + 4, -(W + 4)]
  ans = 0
  for b in black_ind:
      if grid[b] == 2:
          continue
      cnt_b = 1
      cnt_w = 0
      q = [b]
      grid[b] = 2
      while q:
          cp = q.pop()
          if grid[cp] == 2:
              for d in move:
                  if grid[cp + d] == 0:
                      grid[cp + d] = 3
                      cnt_w += 1
                      q.append(cp + d)
          elif grid[cp] == 3:
              for d in move:
                  if grid[cp + d] == 1:
                      grid[cp + d] = 2
                      cnt_b += 1
                      q.append(cp + d)
  
      ans += cnt_b * cnt_w
  print(ans)
  
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"}]