#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 100;
const int M = 1e9 + 7.1;
int f[N], ans[N];
vector<pair<int, int> > q[N];
int m, fac[N], inv[N], pow25[N];
void init() {
  fac[0] = 1;
  inv[0] = inv[1] = 1;
  for (int i = 1; i <= 100000; ++i) {
    fac[i] = 1ll * fac[i - 1] * i % M;
  }
  for (int i = 2; i <= 100000; ++i) {
    inv[i] = 1ll * (M - M / i) * inv[M % i] % M;
  }
  for (int i = 1; i <= 100000; ++i) {
    inv[i] = 1ll * inv[i - 1] * inv[i] % M;
  }
  pow25[0] = 1;
  for (int i = 1; i <= 100000; ++i) {
    pow25[i] = 1ll * pow25[i - 1] * 25 % M;
  }
}
int C(int n, int m) { return 1ll * fac[n] * inv[m] % M * inv[n - m] % M; }
void solve(int len) {
  for (int i = 1; i < len; ++i) f[i] = 0;
  f[len] = 1;
  for (int i = len + 1; i <= 100000; ++i) {
    f[i] = 1ll * f[i - 1] * 26 % M;
    f[i] = (f[i] + 1ll * C(i - 1, len - 1) * pow25[i - len] % M) % M;
  }
  for (int i = 0; i < q[len].size(); ++i) {
    ans[q[len][i].second] = f[q[len][i].first];
  }
}
int main() {
  init();
  scanf("%d", &m);
  string c;
  cin >> c;
  int cur = c.length();
  for (int i = 1; i <= m; ++i) {
    int id;
    scanf("%d", &id);
    if (id == 2) {
      scanf("%d", &id);
      q[cur].push_back(make_pair(id, i));
    } else {
      cin >> c;
      cur = c.length();
    }
  }
  memset(ans, -1, sizeof ans);
  for (int i = 1; i <= 100000; ++i) {
    if (q[i].size() > 0) {
      solve(i);
    }
  }
  for (int i = 1; i <= m; ++i) {
    if (ans[i] != -1) {
      printf("%d\n", ans[i]);
    }
  }
}
