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 math,itertools,fractions,heapq,collections,bisect,sys,queue,copy
  
  sys.setrecursionlimit(10**7)
  inf=10**20
  mod=10**9+7
  dd=[(-1,0),(0,1),(1,0),(0,-1)]
  ddn=[(-1,0),(-1,1),(0,1),(1,1),(1,0),(1,-1),(0,-1),(-1,-1)]
  
  def LI(): return [int(x) for x in sys.stdin.readline().split()]
  # def LF(): return [float(x) for x in sys.stdin.readline().split()]
  def I(): return int(sys.stdin.readline())
  def F(): return float(sys.stdin.readline())
  def LS(): return sys.stdin.readline().split()
  def S(): return input()
  
  def main():
    h,w=LI()
    field=[S() for _ in range(h)]
  
    ans=0
    for i in range(h):
      for j in range(w):
        if field[i][j]=='#':
          q=collections.deque()
          visited=[[False]*w for _ in range(h)]
          q.append((i,j))
          while q:
            y,x=q.popleft()
            if visited[y][x]:
              continue
            visited[y][x]=True
            for dy,dx in dd:
              ny=y+dy
              nx=x+dx
              if 0<=ny<h and 0<=nx<w:
                if field[y][x]==field[ny][nx]:
                  continue
                if visited[ny][nx]:
                  continue
                if field[ny][nx]=='.':
                  # ans+=1
                q.append((ny,nx))
      # print(ans)
    return ans
  
  # main()
  print(main())
  
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"}]