#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7;
const long long MAXN = 1e5 + 7;
vector<long long> fact(MAXN), inv_fact(MAXN);
long long gcdExtended(long long a, long long b, long long *x, long long *y) {
  if (a == 0) {
    *x = 0, *y = 1;
    return b;
  }
  long long x1, y1;
  long long gcd = gcdExtended(b % a, a, &x1, &y1);
  *x = y1 - (b / a) * x1;
  *y = x1;
  return gcd;
}
long long modInverse(long long a) {
  long long x, y;
  long long g = gcdExtended(a, MOD, &x, &y);
  assert(g == 1);
  long long res = (x % MOD + MOD) % MOD;
  return res;
}
void calc() {
  fact[0] = 1;
  inv_fact[0] = 1;
  for (long long i = 1; i < MAXN; i++) {
    fact[i] = (fact[i - 1] * i) % MOD;
    inv_fact[i] = modInverse(fact[i]);
  }
}
long long binary_expo(long long a, long long n) {
  if (n == 0) return 1;
  if (n == 1) return a;
  long long p = binary_expo(a, n / 2);
  (p *= p) %= MOD;
  if (n & 1) (p *= a) %= MOD;
  return p;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  long long div26 = modInverse(26);
  calc();
  long long m;
  cin >> m;
  string s;
  cin >> s;
  long long nsz = s.size();
  string s2;
  while (m > 0) {
    vector<pair<long long, long long>> q;
    while (m--) {
      long long t;
      cin >> t;
      if (t == 1) {
        cin >> s2;
        break;
      } else {
        long long x;
        cin >> x;
        q.push_back({x, 0});
      }
    }
    long long sz = q.size();
    for (long long i = 0; i < sz; i++) {
      q[i].second = i;
    }
    sort(q.begin(), q.end());
    vector<long long> ans(sz);
    long long cur = 0, sec = binary_expo(div26, nsz);
    for (long long i = 0, l = nsz; i < sz; i++) {
      if (q[i].first < nsz)
        ans[q[i].second] = 0;
      else {
        for (; l <= q[i].first; l++) {
          long long nt = 1;
          (nt *= fact[l - 1]) %= MOD;
          (nt *= inv_fact[nsz - 1]) %= MOD;
          (nt *= inv_fact[l - nsz]) %= MOD;
          (nt *= sec) %= MOD;
          (sec *= div26) %= MOD;
          (sec *= 25) %= MOD;
          (cur += nt) %= MOD;
        }
        long long third = binary_expo(26, q[i].first);
        long long ta = (cur * third) % MOD;
        ans[q[i].second] = ta;
      }
    }
    for (long long i = 0; i < sz; i++) {
      cout << ans[i] << endl;
    }
    s = s2;
    nsz = s.size();
  }
  return 0;
}
