#include <bits/stdc++.h>
inline long long read() {
  long long x = 0;
  char c = getchar(), f = 1;
  for (; c < '0' || '9' < c; c = getchar())
    if (c == '-') f = -1;
  for (; '0' <= c && c <= '9'; c = getchar()) x = x * 10 + c - '0';
  return x * f;
}
inline void write(long long x) {
  static char buf[20];
  int len = 0;
  if (x < 0) putchar('-'), x = -x;
  for (; x; x /= 10) buf[len++] = x % 10 + '0';
  if (!len)
    putchar('0');
  else
    while (len) putchar(buf[--len]);
}
inline void writesp(long long x) {
  write(x);
  putchar(' ');
}
inline void writeln(long long x) {
  write(x);
  putchar('\n');
}
std::vector<int> ans[200010];
long long fac[200010], inv[200010], p25[200010];
char s[200010];
int T, n, len;
inline long long power(long long a, long long b) {
  long long ans = 1;
  for (; b; b >>= 1, a = a * a % 1000000007)
    if (b & 1) ans = ans * a % 1000000007;
  return ans;
}
inline long long C(int n, int m) {
  return (n < 0 || m < 0 || m > n)
             ? 0
             : fac[n] * inv[m] % 1000000007 * inv[n - m] % 1000000007;
}
void solve(std::vector<int>& a) {
  for (int i = 0; i < len; i++) a[i] = 0;
  for (int i = len; i <= 1e5; i++)
    a[i] = (a[i - 1] * 26ll + C(i - 1, len - 1) * p25[i - len] % 1000000007) %
           1000000007;
}
int main() {
  fac[0] = inv[0] = p25[0] = 1;
  for (int i = 1; i <= 1e5; i++) {
    fac[i] = fac[i - 1] * i % 1000000007;
    inv[i] = power(fac[i], 1000000007 - 2);
    p25[i] = p25[i - 1] * 25 % 1000000007;
  }
  T = read();
  scanf("%s", s);
  len = strlen(s);
  ans[len].resize(1e5 + 1);
  solve(ans[len]);
  while (T--) {
    int op = read();
    if (op == 2) {
      n = read();
      writeln(ans[len][n]);
    } else {
      scanf("%s", s);
      len = strlen(s);
      if (ans[len].size()) continue;
      ans[len].resize(1e5 + 1);
      solve(ans[len]);
    }
  }
  return 0;
}
