#include <bits/stdc++.h>
using namespace std;
long long n, m, q, t, c;
string s;
long long inv[200007];
long long p[200007];
long long f[200007];
long long nq[200007];
long long mq[200007];
long long res[200007];
long long dp[200007];
vector<long long> que[200007];
long long fpow(long long a, long long b) {
  if (b == 0) return 1;
  if (b == 1) return a % 1000000007;
  if (b % 2)
    return (a * fpow(a, b - 1)) % 1000000007;
  else {
    long long q = fpow(a, b / 2);
    return (q * q) % 1000000007;
  }
}
long long dziel(long long a, long long b) {
  return (a * fpow(b % 1000000007, 1000000007 - 2)) % 1000000007;
}
long long choose(long long a, long long b) {
  return dziel(f[a], f[b] * f[a - b]);
}
void solve(long long m) {
  memset(dp, 0, sizeof dp);
  dp[m] = 1;
  long long dwumian = 1;
  for (long long i = m + 1; i <= 1e5; ++i) {
    dwumian = (((dwumian * (i - 1)) % 1000000007) * inv[i - m]) % 1000000007;
    dp[i] = (26 * dp[i - 1] + dwumian * p[i - m]) % 1000000007;
  }
}
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  f[0] = 1;
  p[0] = 1;
  for (long long i = 1; i < 200007; ++i) {
    f[i] = (f[i - 1] * i) % 1000000007;
    p[i] = (25 * p[i - 1]) % 1000000007;
    inv[i] = fpow(i, 1000000007 - 2);
  }
  cin >> q >> s;
  m = s.size();
  for (long long i = 1; i <= q; ++i) {
    cin >> t;
    if (t == 1) {
      cin >> s;
      m = s.size();
    } else {
      cin >> n;
      nq[++c] = n;
      mq[c] = m;
      que[m].push_back(c);
    }
  }
  for (long long i = 1; i <= 1e5; ++i) {
    if (!que[i].empty()) solve(i);
    for (auto it : que[i]) res[it] = dp[nq[it]];
  }
  for (long long i = 1; i <= c; ++i) {
    cout << res[i] << '\n';
  }
}
