#include #include #include using namespace std; using i64 = int64_t; vector dp; vector> G; vector arr; constexpr int mod = static_cast(powl(10, 9)) + 7; i64 rec(int v, int cur) { i64 &res = dp[v]; if(cur == 3) { return 1; } if(res != -1) { return res; } res = 0; for(int u : G[v]) { if(arr[u] == cur+1) { res += rec(u, cur+1); res %= mod; } } return res; } int main(void) { int n, m; scanf("%d%d", &n, &m); string s; cin >> s; arr.resize(n); for(int i=0; i(string("PDCA").find(s[i])); } G.assign(n, vector()); for(int i=0; i