P9131 [USACO23FEB] Problem Setting P

Description

**Note: The memory limit for this problem is 512MB, twice the default.** Farmer John created $N(1 \le N \le 10^5)$ problems. He then recruited $M (1 \le M \le 20)$ test-solvers, each of which rated every problem as "easy" or "hard." His goal is now to create a problemset arranged in increasing order of difficulty, consisting of some subset of his $N$ problems arranged in some order. There must exist no pair of problems such that some test-solver thinks the problem later in the order is easy but the problem earlier in the order is hard. Count the number of distinct nonempty problemsets he can form, modulo $10^9+7$.

Input Format

The first line contains $N$ and $M$. The next $M$ lines each contain a string of length $N$. The $i$-th character of this string is `E` if the test-solver thinks the ith problem is easy, or `H` otherwise.

Output Format

The number of distinct problemsets FJ can form, modulo $10^9+7$.

Explanation/Hint

### Explanation for Sample 1 The nine possible problemsets are as follows: $[1]$ $[1,2]$ $[1,3]$ $[1,3,2]$ $[2]$ $[3]$ $[3,1]$ $[3,2]$ $[3,1,2]$ Note that the order of the problems within the problemset matters. ### SCORING - Inputs $3-4$: $M=1$ - Inputs $5-14$: $M \le 16$ - Inputs $15-22$: No additional constraints.