#include using namespace std; using ll = long long; #define rep(i, s, e) for (int i = (int)(s); i < (int)(e); ++i) #define all(a) (a).begin(),(a).end() int main() { cin.tie(nullptr); ios_base::sync_with_stdio(false); int H, W; cin >> H >> W; vector> A(H, vector(W)); rep(i, 0, H) rep(j, 0, W) cin >> A[i][j]; int N = H + W - 2; vector perm(N, false); rep(i, 0, W - 1) perm[N - i - 1] = true; int ans = 0; do { int i = 0, j = 0; bool can = true; int cnt = 1; rep(t, 0, N) { if (perm[t]) ++j; else ++i; if (A[i][j] == '#') can = false; else if (A[i][j] == 'o') ++cnt; else { --cnt; if (cnt < 0) can = false; } } if (can) ++ans; } while (next_permutation(all(perm))); cout << ans << '\n'; }