#include <bits/stdc++.h>
using namespace std;
const int N = 100020;
const int mod = 1000 * 1000 * 1000 + 7;
int n, m, k, i, j, len, e;
int t[N];
char query[N];
int f[500][N];
int fac[N];
int invfac[N];
int p25[N], p26[N], was[N];
int keys;
int qw[N];
int oo[N];
char s[N];
inline int mul(int a, int b) { return (1ll * a * b) % mod; }
inline int add(int a, int b) { return (a + b) % mod; }
inline int bp(int a, int n) {
  int ret = 1;
  while (n) {
    if (n & 1) ret = mul(ret, a);
    a = mul(a, a);
    n /= 2;
  }
  return ret;
}
inline int C(int n, int k) {
  if (k > n) return 0;
  if (k == 0) return 1;
  if (k == n) return 1;
  if (k == 1) return n;
  int tmp = fac[n];
  tmp = (1ll * tmp * invfac[k]) % mod;
  tmp = (1ll * tmp * invfac[n - k]) % mod;
  return tmp;
}
int main() {
  fac[0] = p25[0] = p26[0] = 1;
  for (int i = 1; i <= 100000; i++) {
    fac[i] = (1ll * fac[i - 1] * i) % mod;
    invfac[i] = bp(fac[i], mod - 2);
    p25[i] = (25ll * p25[i - 1]) % mod;
    p26[i] = (26ll * p26[i - 1]) % mod;
  }
  scanf("%d", &m);
  scanf("%s", s + 1);
  len = strlen(s + 1);
  was[len] = 1;
  e = len;
  keys = 1;
  for (int j = 0; j < len; j++) f[keys][j] = 0;
  for (int j = len; j <= 100000; j++) {
    f[keys][j] = mul(26, f[keys][j - 1]);
    k = j - len;
    int tmp = C(len + k - 1, len - 1);
    tmp = mul(tmp, p26[j - len - k]);
    tmp = mul(tmp, p25[k]);
    f[keys][j] = add(f[keys][j], tmp);
  }
  for (int i = 1; i <= m; i++) {
    scanf("%d", &t[i]);
    if (t[i] == 1) {
      scanf("%s", query + 1);
      len = strlen(query + 1);
      qw[i] = len;
      if (!was[len]) {
        was[len] = ++keys;
        for (int j = 0; j < len; j++) f[keys][j] = 0;
        for (int j = len; j <= 100000; j++) {
          f[keys][j] = mul(f[keys][j - 1], 26);
          k = j - len;
          int tmp = C(len + k - 1, len - 1);
          tmp = mul(tmp, p26[j - len - k]);
          tmp = mul(tmp, p25[k]);
          f[keys][j] = add(f[keys][j], tmp);
        }
      }
    } else
      scanf("%d", &oo[i]);
  }
  for (int i = 1; i <= m; i++) {
    if (t[i] == 1)
      e = qw[i];
    else {
      printf("%d\n", f[was[e]][oo[i]]);
    }
  }
  return 0;
}
