#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 100;
const long long int base = 313;
const long long int inf = 1e8;
const long long int mod = 1e9 + 7;
const int lg = 20;
long long int ans[N], ps[N], pw[3][N], F[2][N];
vector<pair<pair<int, int>, int>> q;
long long int PW(long long int n, long long int x) {
  if (n == 0) return 1;
  long long int y = (x * x) % mod;
  if (n % 2 == 0) return PW(n / 2, y);
  return (PW(n / 2, y) * x) % mod;
}
long long int inv(long long int k) { return PW(mod - 2, k % mod) % mod; }
long long int C(long long int n, long long int k) {
  long long int res = (F[0][n] * F[1][k]) % mod;
  return (res * F[1][n - k]) % mod;
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  F[0][0] = pw[0][0] = pw[1][0] = 1;
  for (int i = 1; i < N; i++) {
    pw[0][i] = (25 * pw[0][i - 1]) % mod;
    pw[1][i] = (26 * pw[1][i - 1]) % mod;
    F[0][i] = (F[0][i - 1] * i) % mod;
  }
  for (int i = 0; i < N; i++) {
    F[1][i] = inv(F[0][i]);
    pw[2][i] = inv(pw[1][i]);
  }
  int qu;
  string second;
  cin >> qu >> second;
  int m = second.size(), cnt = 0;
  while (qu--) {
    int t;
    cin >> t;
    if (t == 1) {
      cin >> second;
      m = second.size();
    } else {
      int n;
      cin >> n;
      q.push_back({{m, n}, cnt++});
    }
  }
  sort(q.begin(), q.end());
  for (int i = 0; i < q.size();) {
    int m = q[i].first.first;
    for (int j = 0; j < m; j++) ps[j] = 0;
    for (int j = m; j < N; j++) {
      long long int x = (pw[0][j - m] * pw[2][j]) % mod;
      x = (x * C(j - 1, m - 1)) % mod;
      ps[j] = (ps[j - 1] + x) % mod;
    }
    while (q[i].first.first == m) {
      int n = q[i].first.second, id = q[i].second;
      ans[id] = (pw[1][n] * ps[n]) % mod;
      i++;
    }
  }
  for (int i = 0; i < q.size(); i++) cout << ans[i] << endl;
  return 0;
}
