#include <bits/stdc++.h>
using namespace std;
const int N = 100005, M = 1e9 + 7;
int f[305][N], g[N], fac[N], inv[N], Q, len, opt, x, fac2[N];
char s[N];
inline int C(int x, int y) {
  if (x < y) return 0;
  return (long long)fac[x] * inv[y] % M * inv[x - y] % M;
}
inline int ksm(int x, int y) {
  int ans = 1;
  for (; y; y >>= 1, x = (long long)x * x % M)
    if (y & 1) ans = (long long)ans * x % M;
  return ans;
}
inline void solve(int f[], int len) {
  for (int i = 0; i < N; i++) f[i] = 0;
  for (int i = len; i < N; i++)
    f[i] = ((long long)C(i - 1, len - 1) * fac2[i - len] + 26ll * f[i - 1]) % M;
}
int main() {
  fac[0] = inv[0] = fac2[0] = 1;
  for (int i = 1; i < N; i++)
    fac[i] = (long long)fac[i - 1] * i % M, inv[i] = ksm(fac[i], M - 2),
    fac2[i] = fac2[i - 1] * 25ll % M;
  scanf("%d", &Q);
  scanf("%s", s + 1);
  len = strlen(s + 1);
  if (len > 300) solve(g, len);
  for (int i = 1; i <= 300; i++) solve(f[i], i);
  while (Q--) {
    scanf("%d", &opt);
    if (opt == 1) {
      scanf("%s", s + 1);
      len = strlen(s + 1);
      if (len > 300) solve(g, len);
    } else {
      scanf("%d", &x);
      if (len <= 300)
        printf("%d\n", f[len][x]);
      else
        printf("%d\n", g[x]);
    }
  }
}
