#include using namespace std; #define rep(i,n) for(int i = 0; i < (n);i++) #define sz(x) int(x.size()) typedef long long ll; typedef pair P; const int mod = 1e9+7; int dp[100010]; int main(){ int n, m; cin >> n >> m; string s; cin >> s; vector

pd, dc, ca; rep(i,m) { int u, v; cin >> u >> v; u--; v--; if (s[u] < s[v]) swap(u,v); if (s[u] == 'P' && s[v] == 'D') pd.push_back({u,v}), dp[u] = 1; if (s[u] == 'D' && s[v] == 'C') dc.push_back({u,v}); if (s[u] == 'C' && s[v] == 'A') ca.push_back({u,v}); } for (auto e : pd) { (dp[e.second] += dp[e.first]) %= mod; } for (auto e : dc) { (dp[e.second] += dp[e.first]) %= mod; } int res = 0; for (auto e : ca) { (res += dp[e.first]) %= mod; } cout << res << endl; return 0; }