## https://yukicoder.me/problems/no/2708 def main(): H, W = map(int, input().split()) A = [] for _ in range(H): A.append(input()) answer = 0 def dfs(H, W, A, pos_h, pos_w, jewel): if (pos_h, pos_w) == (H - 1, W - 1): return 1 answer = 0 for dh, dw in ((0, 1), (1, 0)): new_h = dh + pos_h new_w = dw + pos_w if 0 <= new_h < H and 0 <= new_w < W: if A[new_h][new_w] == "#": continue elif A[new_h][new_w] == "o": answer += dfs(H, W, A, new_h, new_w, jewel + 1) else: if jewel >= 1: answer += dfs(H, W, A, new_h, new_w, jewel - 1) return answer answer = dfs(H, W, A, 0, 0, 1) print(answer) if __name__ == "__main__": main()