#include <bits/stdc++.h>
using namespace std;
const int iinf = 1e9 + 7;
const long long linf = 1ll << 60;
const double dinf = 1e10;
void scf(int &x) {
  bool f = 0;
  x = 0;
  char c = getchar();
  while ((c < '0' || c > '9') && c != '-') c = getchar();
  if (c == '-') {
    f = 1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    x = x * 10 + c - '0';
    c = getchar();
  }
  if (f) x = -x;
  return;
}
void scf(int &x, int &y) {
  scf(x);
  return scf(y);
}
void scf(int &x, int &y, int &z) {
  scf(x);
  scf(y);
  return scf(z);
}
const int N = 1e5 + 100;
const long long MOD = 1e9 + 7;
int n;
long long pow25[N], pow26[N], fac[N], inv[N], inv26[N];
struct query {
  int l, n, id;
  long long ans;
  query() {}
  query(int L, int N, int ID) {
    l = L;
    n = N;
    id = ID;
  }
  bool operator<(const query &a) const { return l == a.l ? n < a.n : l < a.l; }
} qry[N];
inline long long kiss_me(long long a, long long n) {
  long long ret = 1;
  while (n) {
    if (n & 1) ret = ret * a % MOD;
    a = a * a % MOD;
    n >>= 1;
  }
  return ret;
}
inline long long INV(long long x) { return kiss_me(x, MOD - 2); }
inline long long C(int n, int m) {
  return n < m ? 0 : fac[n] * inv[m] % MOD * inv[n - m] % MOD;
}
void init() {
  pow25[0] = pow26[0] = fac[0] = inv[0] = inv26[0] = 1ll;
  for (int i = (1); i <= (N - 1); i++)
    pow25[i] = pow25[i - 1] * 25ll % MOD, pow26[i] = pow26[i - 1] * 26ll % MOD,
    fac[i] = fac[i - 1] * (long long)i % MOD, inv26[i] = INV(pow26[i]),
    inv[i] = INV(fac[i]);
  int m, l;
  scf(m);
  char str[N];
  scanf("%s", str);
  l = (int)strlen(str);
  while (m--) {
    int op;
    scf(op);
    if (op == 2) {
      int x;
      scf(x);
      qry[n] = query(l, x, n);
      n++;
    } else {
      scanf("%s", str);
      l = (int)strlen(str);
    }
  }
  sort(qry, qry + n);
  return;
}
inline bool cmp(const query &a, const query &b) { return a.id < b.id; }
void solve() {
  int lst;
  long long cur;
  for (int i = 0; i < (n); i++) {
    if (!i || qry[i].l != qry[i - 1].l) lst = qry[i].l, cur = 0;
    while (lst <= qry[i].n)
      cur = (cur + pow25[lst - qry[i].l] * inv26[lst] % MOD *
                       C(lst - 1, qry[i].l - 1) % MOD) %
            MOD,
      lst++;
    qry[i].ans = cur * pow26[qry[i].n] % MOD;
  }
  sort(qry, qry + n, cmp);
  for (int i = 0; i < (n); i++) printf("%I64d\n", qry[i].ans);
  return;
}
int main() {
  init();
  solve();
  return 0;
}
