#include using namespace std; typedef long long LL; const int mod = 1e9 + 7; char s[100010]; char str[100010]; LL d[1000][1000]; int main () { int n, q; cin >> n >> q; cin >> s; for (int i = 1; i <= q; i++) { int op, x, y, t; cin >> op; if (op == 1) { cin >> x >> y >> t; t = t % 26; for (int j = x; j <= y; j++) { s[j] = s[j] + t; if (s[j] > 'z') { s[j] = (s[j] - 'z') + 'a' - 1; } } // cout << s << endl; } else { cin >> x >> y; int len = 0; for (int j = 0, k = x; k <= y; j++, k++) { str[j] = s[k]; len = j + 1; } for (int j = 0; j < len; j++) { d[j][j] = 1; } for (int j = 1; j < len; j++) { for (int k = 0; k < len - j; k++) { if (str[k] == str[j + k]) { d[k][j + k] = (d[k][j + k - 1] + d[k + 1][j + k] + 1) % mod; } else { d[k][j + k] = (d[k][j + k - 1] + d[k + 1][j + k] - d[k + 1][j + k - 1]) % mod; } } } cout << d[0][len - 1] << endl; } } return 0; }