#include using namespace std; int n, m; string s; vector g[(int)1e5]; long long mod = 1e9 + 7; int x[(int)1e5]; string pdca = "PDCA"; long long dfs(int cur) { long long ret = 0; if (s[cur] == 'A') { return 1; } for (int to: g[cur]) { if (x[to] == -1) { ret += dfs(to); } else { ret += x[to]; } ret %= mod; } x[cur] = ret; return ret; } int main() { cin>>n>>m; cin>>s; set ps; for (int i=0; i>u>>v; --u; --v; int iu = pdca.find(s[u]); int iv = pdca.find(s[v]); if (iu == string::npos || iv == string::npos) { continue; } if (iv == iu + 1) { g[u].push_back(v); if (s[u] == 'P') { ps.insert(u); } } else if (iu == iv + 1) { g[v].push_back(u); if (s[v] == 'P') { ps.insert(v); } } } for (int i=0; i