# n, m 입력
n, m = map(int, input().split())
# grid 입력
grid = [
input()
for _ in range(n)
]
# 함수들
# l_to_r(x, y)
def l_to_r(x, y):
# 범위 내에 있고, 오른쪽 두 개가 'E'면 성공
return y <= m-3 and grid[x][y+1] == 'E' and grid[x][y+2] == 'E'
# r_to_l(x, y)
def r_to_l(x, y):
# 범위 내에 있고, 왼쪽 두 개가 'E'면 성공
return y >= 2 and grid[x][y-1] == 'E' and grid[x][y-2] == 'E'
# u_to_d(x, y)
def u_to_d(x, y):
# 범위 내에 있고, 아래 두 개가 'E'면 성공
return x <= n-3 and grid[x+1][y] == 'E' and grid[x+2][y] == 'E'
# d_to_u(x, y)
def d_to_u(x, y):
# 범위 내에 있고, 위 두 개가 'E'면 성공
return x >= 2 and grid[x-1][y] == 'E' and grid[x-2][y] == 'E'
# ru_to_ld(x, y)
def ru_to_ld(x, y):
# 범위 내에 있고, 왼쪽 대각선 아래 두 개가 'E'면 성공
return x <= n-3 and y >= 2 and grid[x+1][y-1] == 'E' and grid[x+2][y-2] == 'E'
# lu_to_rd(x, y)
def lu_to_rd(x, y):
# 범위 내에 있고, 오른쪽 대각선 아래 두 개가 'E'면 성공
return x <= n-3 and y <= m-3 and grid[x+1][y+1] == 'E' and grid[x+2][y+2] == 'E'
# rd_to_lu(x, y)
def rd_to_lu(x, y):
# 범위 내에 있고, 왼쪽 대각선 위 두 개가 'E'면 성공
return x >= 2 and y >= 2 and grid[x-1][y-1] == 'E' and grid[x-2][y-2] == 'E'
# ld_to_ru(x, y)
def ld_to_ru(x, y):
# 범위 내에 있고, 왼쪽 대각선 위 두 개가 'E'면 성공
return x >= 2 and y <= m-3 and grid[x-1][y+1] == 'E' and grid[x-2][y+2] == 'E'
# 설계
# ans
ans = 0
# 완전 탐색 시작
for i in range(n):
for j in range(m):
# 'L'을 찾고
if grid[i][j] == 'L':
# 왼쪽에서 오른쪽으로 'LEE'이면,
if l_to_r(i, j):
# 정답에 추가
ans += 1
# 오른쪽에서 왼쪽으로 'LEE' 이면,
if r_to_l(i, j):
# 정답에 추가
ans += 1
# 위에서 아래로 'LEE' 이면,
if u_to_d(i, j):
# 정답에 추가
ans += 1
# 아래서 위로 'LEE' 이면,
if d_to_u(i, j):
# 정답에 추가
ans += 1
# 오른쪽 위에서 왼쪽 아래로 'LEE' 이면,
if ru_to_ld(i, j):
# 정답에 추가
ans += 1
# 왼쪽 위에서 오른쪽 아래로 'LEE' 이면,
if lu_to_rd(i, j):
# 정답에 추가
ans += 1
# 오른쪽 아래에서 왼쪽 위로 'LEE' 이면,
if rd_to_lu(i, j):
# 정답에 추가
ans += 1
# 왼쪽 아래에서 오른쪽 위로 'LEE' 이면,
if ld_to_ru(i, j):
# 정답에 추가
ans += 1
# 출력
print(ans)