#include <bits/stdc++.h>
using namespace std;
const long long inf = (long long)1e9 + 70;
const long long mod = 1e9 + 7;
const int maxn = 1e5 + 1000;
const int s = 316;
long long ans[maxn];
bool cmp(pair<pair<int, int>, int> a, pair<pair<int, int>, int> b) {
  if (a.first.first / s != b.first.first / s) {
    return a.first.first / s < b.first.first / s;
  }
  return make_pair(a.first.second, a.second) <
         make_pair(b.first.second, b.second);
}
long long pw(long long a, long long n) {
  assert(n >= 0);
  if (n == 0) return 1;
  long long b = pw(a, n >> 1);
  b = b * b % mod;
  if (n & 1) b = b * a % mod;
  return b;
}
long long fact[maxn];
long long ifact[maxn];
long long pw25[maxn];
long long binom(int n, int k) {
  if (k < 0 || k > n) return 0;
  long long ans = fact[n];
  ans = ans * ifact[k] % mod;
  ans = ans * ifact[n - k] % mod;
  return ans;
}
int main() {
  fact[0] = 1;
  ifact[0] = 1;
  for (int i = (1); i < (maxn); i++) {
    fact[i] = (fact[i - 1] * (long long)i) % mod;
    ifact[i] = pw(fact[i], mod - 2);
  }
  pw25[0] = 1;
  for (int i = (1); i < (maxn); i++) {
    pw25[i] = (pw25[i - 1] * (long long)25) % mod;
  }
  if (fopen("i.txt", "r")) freopen("i.txt", "r", stdin);
  int(m);
  scanf("%d", &m);
  string s;
  cin >> s;
  int k = s.length();
  int tt = 0;
  vector<pair<pair<int, int>, int> > queries;
  for (int i = (0); i < (m); i++) {
    int(type);
    scanf("%d", &type);
    if (type == 1) {
      cin >> s;
      k = s.length();
    } else {
      int(n);
      scanf("%d", &n);
      tt++;
      if (k > n) {
        ans[tt] = 0;
      } else {
        queries.push_back(make_pair(pair<int, int>(k, n), tt));
      }
    }
  }
  sort((queries).begin(), (queries).end(), cmp);
  int n = 1;
  k = 1;
  long long e = 25;
  for (auto x : queries) {
    int gn = x.first.second;
    int gk = x.first.first;
    int id = x.second;
    while (n < gn) {
      e = e * (long long)26 % mod;
      e = e - binom(n, k - 1) * pw25[n - k + 1];
      e %= mod;
      n++;
    }
    while (k > gk) {
      e -= binom(n, k - 1) * pw25[n - k + 1];
      e %= mod;
      k--;
    }
    while (n > gn) {
      e = e + binom(n - 1, k - 1) * pw25[n - k];
      e %= mod;
      e = e * pw(26, mod - 2);
      n--;
    }
    while (k < gk) {
      e += binom(n, k) * pw25[n - k];
      e %= mod;
      k++;
    }
    assert(n == gn && k == gk);
    long long t = pw(26, gn) - e;
    t %= mod;
    ans[id] = (t + mod) % mod;
  }
  for (int i = (1); i < (tt + 1); i++) {
    cout << ans[i] << "\n";
  }
  return 0;
}
