#include <bits/stdc++.h>
using namespace std;
const long long MXN = 100010, BAR = 500, mod = 1000000007;
long long fac[MXN], inv[MXN], mem[MXN];
string s;
long long powmod(long long x, long long p) {
  long long ret = 1;
  while (p) {
    if (p & 1) ret = ret * x % mod;
    x = x * x % mod;
    p >>= 1;
  }
  return ret;
}
long long binom(long long n, long long m) {
  if (m > n) return 0;
  return fac[n] * inv[m] % mod * inv[n - m] % mod;
}
void init(int l) {
  long long i, base = 1;
  for (i = 0; i < MXN; i++) {
    if (i < l)
      mem[i] = 0;
    else {
      mem[i] = binom(i - 1, l - 1) * base % mod;
      base = base * 25 % mod;
    }
  }
  for (i = 0; i < MXN; i++) mem[i + 1] = (mem[i + 1] + mem[i] * 26) % mod;
}
int main() {
  long long m, i, t, n, ans, base;
  fac[0] = 1;
  for (i = 1; i < MXN; i++) fac[i] = fac[i - 1] * i % mod;
  inv[MXN - 1] = powmod(fac[MXN - 1], mod - 2);
  assert((long long)inv[MXN - 1] * fac[MXN - 1] % mod == 1);
  for (i = MXN - 2; i >= 0; i--) inv[i] = inv[i + 1] * (i + 1) % mod;
  while (cin >> m) {
    cin >> s;
    if (s.length() > BAR) init(s.length());
    while (m--) {
      scanf("%lld", &t);
      if (t == 1) {
        cin >> s;
        if (s.length() > BAR) init(s.length());
      } else {
        scanf("%lld", &n);
        if (s.length() > BAR)
          printf("%lld\n", mem[n]);
        else if (n < s.length())
          printf("0\n");
        else {
          ans = powmod(26, n);
          base = powmod(25, n - s.length() + 1);
          for (i = s.length() - 1; i >= 0; i--) {
            ans -= binom(n, i) * base % mod;
            if (ans < 0) ans += mod;
            base = base * 25 % mod;
          }
          printf("%lld\n", ans);
        }
      }
    }
  }
}
