#include <bits/stdc++.h>
using namespace std;
long long f[100005];
long long vf[100005];
long long pw(long long a, long long b) {
  long long r = 1;
  while (b) {
    if (b & 1) r = (r * a) % 1000000007ll;
    a = (a * a) % 1000000007ll;
    b /= 2;
  }
  return r;
}
char buf[100005];
int m, l;
vector<tuple<int, int, int> > qu;
long long s[100005];
long long p25[100005];
long long c(int n, int k) {
  return f[n] * vf[k] % 1000000007ll * vf[n - k] % 1000000007ll;
}
void pc(int nl) {
  l = nl;
  for (int i = (0); i < (l); i++) s[i] = 0;
  for (int i = (l); i < (100005); i++) {
    s[i] = s[i - 1] * 26 + c(i - 1, l - 1) * p25[i - l];
    s[i] %= 1000000007ll;
  }
}
int main() {
  f[0] = 1;
  for (int i = (1); i < (100005); i++) f[i] = i * f[i - 1] % 1000000007ll;
  vf[100004] = pw(f[100004], 1000000007ll - 2);
  for (int i = 100003; i >= 0; i--) vf[i] = vf[i + 1] * (i + 1) % 1000000007ll;
  p25[0] = 1;
  for (int i = (1); i < (100005); i++) p25[i] = p25[i - 1] * 25 % 1000000007ll;
  scanf("%d", &m);
  scanf(" %s", buf);
  l = strlen(buf);
  for (int z = (0); z < (m); z++) {
    int t;
    scanf("%d", &t);
    if (t == 1) {
      scanf(" %s", buf);
      l = strlen(buf);
    } else {
      int n;
      scanf("%d", &n);
      qu.emplace_back(l, n, z);
    }
  }
  sort(qu.begin(), qu.end());
  l = -1;
  vector<pair<int, long long> > ans;
  for (auto q : qu) {
    int nl, n, z;
    tie(nl, n, z) = q;
    if (nl != l) {
      pc(nl);
    }
    ans.emplace_back(z, s[n]);
  }
  sort(ans.begin(), ans.end());
  for (auto a : ans) printf("%lld\n", a.second);
}
