# import sys,bisect
from heapq import heappop, heappush
from collections import deque, Counter, defaultdict
inf = 2 ** 63 - 1
mod = 998244353
H,W = list(map(int, input().split()))
S = [list(input()) for _ in range(H)]
class CumulativeSum2D:
def __init__(self, W, H):
# data[x][y] で扱う(外側が x, 内側が y)
self.data = [[0] * (H+1) for _ in range(W+1)]
def add(self, x, y, z):
# 0-indexed で (x, y) に値 z を加える
x += 1
y += 1
if x >= len(self.data) or y >= len(self.data[0]):
return
self.data[x][y] += z
def build(self):
# 2 次元累積和を構築
for i in range(1, len(self.data)):
for j in range(1, len(self.data[i])):
self.data[i][j] += self.data[i][j-1] + self.data[i-1][j] - self.data[i-1][j-1]
def query(self, sx, sy, gx, gy):
"""
[sx, gx) × [sy, gy) の長方形の和を返す
ここで引数は 0-indexed, 右端/下端は「開区間」(C++版と同じ)
"""
return (
self.data[gx][gy] - self.data[sx][gy] - self.data[gx][sy] + self.data[sx][sy]
)
E = CumulativeSum2D(H,W)
F = CumulativeSum2D(H,W)
for i in range(H):
for j in range(W):
if S[i][j]=="E": E.add(i,j,1)
if S[i][j]=="F": F.add(i,j,1)
E.build()
F.build()
ans = 0
nums = [[0]*W for _ in range(H)]
for i in range(H-1):
for j in range(W):
nums[i+1][j] += nums[i][j] + E.query(0,0,i,j) * F.query(i,j+1,i+1,W)
# print(nums)
for i in range(H):
for j in range(W):
if S[i][j]=="G":
ans += nums[i][j]
print(ans)