#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007;
char s[1000005];
int n, m, len, num[1000000], f[550][100005], x;
long long invjc[1000000], m25[1000000], m26[1000000], invm26[1000000],
    jc[1000000];
long long C(int x, int y) {
  if (x == 0) return 1;
  return ((invjc[y - x] * invjc[x]) % mod * jc[y]) % mod;
}
void dp(int x, int y) {
  for (int i = y; i <= 100000; i++) {
    f[x][i] = (f[x][i - 1] +
               ((m25[i - y] * invm26[i]) % mod * C(y - 1, i - 1)) % mod) %
              mod;
  }
}
long long kp(long long x, long long y) {
  long long ans = 1;
  while (y) {
    if (y & 1) ans = (ans * x) % mod;
    x = x * x % mod;
    y >>= 1;
  }
  return ans;
}
int main() {
  scanf("%d", &n);
  while (!len) scanf("%s", s), len = strlen(s);
  m26[0] = m25[0] = jc[0] = invm26[0] = invjc[0] = 1;
  invm26[1] = kp(26, mod - 2);
  for (int i = 1; i <= 100000; i++) {
    m26[i] = (m26[i - 1] * 26) % mod;
    m25[i] = (m25[i - 1] * 25) % mod;
    jc[i] = (jc[i - 1] * i) % mod;
    invm26[i] = (invm26[i - 1] * invm26[1]) % mod;
  }
  invjc[100000] = kp(jc[100000], mod - 2);
  for (int i = 99999; i; i--) invjc[i] = (invjc[i + 1] * (i + 1)) % mod;
  num[len] = ++m;
  dp(m, len);
  x = m;
  for (int i = 1; i <= n; i++) {
    int bo;
    scanf("%d", &bo);
    if (bo == 2) {
      scanf("%d", &bo);
      printf("%lld\n", (f[x][bo] * m26[bo]) % mod);
    } else {
      len = 0;
      char ch = getchar();
      while (ch < 'a' || ch > 'z') ch = getchar();
      while (ch >= 'a' && ch <= 'z') ch = getchar(), ++len;
      if (num[len])
        x = num[len];
      else {
        x = num[len] = ++m;
        dp(m, len);
      }
    }
  }
}
