#include <bits/stdc++.h>
using namespace std;
int read() {
  char ch = getchar();
  int x = 0, pd = 0;
  while (ch < '0' || ch > '9') pd |= ch == '-', ch = getchar();
  while ('0' <= ch && ch <= '9')
    x = (x << 3) + (x << 1) + (ch ^ 48), ch = getchar();
  return pd ? -x : x;
}
const int maxn = 100005;
const int mod = 1000000007;
long long fac[maxn], inv[maxn], p25[maxn];
long long quick_pow(long long x, long long y) {
  long long res = 1;
  while (y) {
    if (y & 1) res = res * x % mod;
    x = x * x % mod, y >>= 1;
  }
  return res;
}
void init() {
  fac[0] = inv[0] = p25[0] = 1;
  for (int i = 1; i <= maxn - 5; i++) {
    fac[i] = fac[i - 1] * i % mod;
    inv[i] = quick_pow(fac[i], mod - 2);
    p25[i] = p25[i - 1] * 25 % mod;
  }
}
long long C(int n, int m) {
  if (!m) return 1;
  return fac[n] * inv[n - m] % mod * inv[m] % mod;
}
int n;
vector<int> f[maxn];
char xxx[maxn];
int Add(int a, int b) { return a + b > mod ? a + b - mod : a + b; }
int main() {
  init();
  int T = read();
  scanf("%s", xxx), n = strlen(xxx);
  while (T--) {
    int opt = read(), x;
    if (opt == 1)
      scanf("%s", xxx), n = strlen(xxx);
    else {
      x = read();
      if (f[n].size() <= x) {
        if (!f[n].size()) f[n].push_back(0);
        for (int i = f[n].size(); i <= x; i++) {
          if (i < n)
            f[n].push_back(0);
          else
            f[n].push_back(Add((long long)f[n][i - 1] * 26 % mod,
                               C(i - 1, n - 1) * p25[i - n] % mod));
        }
      }
      printf("%d\n", f[n][x]);
    }
  }
  return 0;
}
