#include using namespace std; int main() { int h, w; cin >> h >> w; vector> a(h, vector(w)); for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { cin >> a[i][j]; } } //(i, j)でk個持ってる場合の数 vector>> dp(h, vector>(w, vector(110, 0LL))); vector>> dec(h, vector>(w, vector(110, false))); dp[0][0][1] = 1LL; dec[0][0][1] = true; auto f = [&](auto f, int i, int j, int k) -> long long { if (!(0 <= i && i < h && 0 <= j && j < w && 0 <= k && k < 110)) { return 0LL; } if (dec[i][j][k]) { return dp[i][j][k]; } if (a[i][j] == '#') { dec[i][j][k] = true; dp[i][j][k] = 0LL; return dp[i][j][k]; } else if (a[i][j] == 'o') { if (k == 0) { dec[i][j][k] = true; dp[i][j][k] = 0LL; return dp[i][j][k]; } dp[i][j][k] = f(f, i - 1, j, k - 1) + f(f, i, j - 1, k - 1); dec[i][j][k] = true; return dp[i][j][k]; } else { dp[i][j][k] = f(f, i - 1, j, k + 1) + f(f, i, j - 1, k + 1); dec[i][j][k] = true; return dp[i][j][k]; } }; long long ans = 0LL; for (int k = 0; k < 110; k++) { ans += f(f, h - 1, w - 1, k); } cout << ans << endl; }