#include using namespace std; using ll = long long; using ld = long double; template using vc = vector; template using vvc = vc>; void solve(); int main() { cin.tie(nullptr); ios::sync_with_stdio(false); cout << fixed << setprecision(20); ll t = 1; // cin >> t; for (int i = 1; i <= t; i++) solve(); return 0; } #define rep(i, a, b) for (ll i = (a); i < (b); i++) ll dy[4] = {0, 1, 0, -1}, dx[4] = {1, 0, -1, 0}; void solve() { ll h, w; cin >> h >> w; vc s(h); rep(i, 0, h) cin >> s[i]; ll res = 0; rep(i, 0, 1 << (h + w - 2)) { ll pop = __builtin_popcount(i); if (pop != h - 1) continue; ll y = 0, x = 0, cnt = 1; bool ok = true; rep(j, 0, h + w - 2) { if (i & (1 << j)) y++; else x++; if (y >= h || x >= w) { ok = false; break; } if (s[y][x] == '#') { ok = false; break; } if (s[y][x] == 'o') cnt++; else cnt--; if (cnt < 0) { ok = false; break; } } if (ok) res++; } cout << res << endl; }