#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void rd(T &x) {
  char ch;
  x = 0;
  bool fl = false;
  while (!isdigit(ch = getchar())) (ch == '-') && (fl = true);
  for (x = (ch ^ '0'); isdigit(ch = getchar()); x = x * 10 + (ch ^ '0'))
    ;
  (fl == true) && (x = -x);
}
template <class T>
inline void ot(T x) {
  x / 10 ? ot(x / 10) : putchar(x % 10 + '0');
}
template <class T>
inline void prt(T a[], int st, int nd) {
  for (register int i = st; i <= nd; ++i) printf("%lld ", a[i]);
  putchar('\n');
}
namespace Miracle {
const int N = 1e5 + 10;
const int mod = 1e9 + 7;
int n;
long long qm(long long x, long long y) {
  long long ret = 1;
  while (y) {
    if (y & 1) ret = ret * x % mod;
    x = x * x % mod;
    y >>= 1;
  }
  return ret;
}
long long jie[N], inv[N];
long long m25[N], i26[N];
int iv;
int exi[N];
int ans[450][N];
int cnt;
long long C(int n, int m) {
  if (n < 0 || m < 0 || n < m) return 0;
  return jie[n] * inv[m] % mod * inv[n - m] % mod;
}
char s[N];
int main() {
  jie[0] = 1;
  for (register int i = 1; i <= N - 5; ++i) jie[i] = jie[i - 1] * i % mod;
  inv[N - 5] = qm(jie[N - 5], mod - 2);
  for (register int i = N - 6; i >= 0; --i) inv[i] = inv[i + 1] * (i + 1) % mod;
  int m, t;
  iv = qm(26, mod - 2);
  m25[0] = 1, i26[0] = 1;
  for (register int i = 1; i <= N - 5; ++i)
    m25[i] = m25[i - 1] * 25 % mod, i26[i] = i26[i - 1] * iv % mod;
  rd(t);
  scanf("%s", s + 1);
  m = strlen(s + 1);
  int op;
  while (t--) {
    rd(op);
    if (op == 1) {
      scanf("%s", s + 1);
      m = strlen(s + 1);
    } else {
      rd(n);
      if (!exi[m]) {
        exi[m] = ++cnt;
        for (register int i = m; i <= N - 5; ++i) {
          ans[cnt][i] = ((long long)ans[cnt][i - 1] +
                         C(i - 1, m - 1) * m25[i - m] % mod * i26[i] % mod) %
                        mod;
        }
      }
      long long now = qm(26, n) * ans[exi[m]][n] % mod;
      printf("%lld\n", now);
    }
  }
  return 0;
}
}  // namespace Miracle
signed main() {
  Miracle::main();
  return 0;
}
