#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007;
long long n, m, op, x, ans, xb, fac[300000], ifac[300000], pw25[300000],
    pw26[300000], ipw26[300000], c[300000][2], h[300000];
map<int, int> f[300000], g[300000];
char s[300000];
long long C(long long x, long long y) {
  return fac[x] * ifac[y] % mod * ifac[x - y] % mod;
}
long long inv(long long x) {
  return x == 1 ? 1 : (mod - mod / x) * inv(mod % x) % mod;
}
void calc(long long n) {
  long long tmp = 1;
  if (g[n].count(0)) f[n][0] = tmp;
  for (long long i = 1; i <= h[n]; ++i) {
    tmp = (tmp + pw25[i] * ipw26[i] % mod * C(i + n - 1, n - 1)) % mod;
    if (g[n].count(i)) f[n][i] = tmp;
  }
}
int main() {
  scanf("%lld%s", &m, s + 1);
  pw25[0] = 1;
  for (long long i = 1; i <= 240000; ++i) pw25[i] = pw25[i - 1] * 25 % mod;
  pw26[0] = ipw26[0] = 1;
  for (long long i = 1; i <= 240000; ++i) {
    pw26[i] = pw26[i - 1] * 26 % mod;
    ipw26[i] = ipw26[i - 1] * inv(26) % mod;
  }
  fac[0] = 1;
  for (long long i = 1; i <= 240000; ++i) fac[i] = fac[i - 1] * i % mod;
  ifac[240000] = inv(fac[240000]);
  for (long long i = 240000 - 1; i >= 0; --i)
    ifac[i] = ifac[i + 1] * (i + 1) % mod;
  n = strlen(s + 1);
  while (m--) {
    scanf("%lld", &op);
    if (op == 1) {
      scanf("%s", s + 1);
      n = strlen(s + 1);
    } else {
      scanf("%lld", &x);
      x -= n;
      c[++xb][0] = n;
      c[xb][1] = x;
      g[n][x] = 1;
      h[n] = max(h[n], x);
    }
  }
  for (int i = 1; i <= 240000; ++i) calc(i);
  for (int i = 1; i <= xb; ++i) {
    n = c[i][0];
    x = c[i][1];
    printf("%lld\n", (long long)f[n][x] * pw26[x] % mod);
  }
  return 0;
}
