#include <bits/stdc++.h>
using namespace std;
#pragma GCC target("avx2")
#pragma GCC optimization("O3")
#pragma GCC optimization("unroll-loops")
#pragma comment(linker, "/stack:200000000")
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
const int N = 100001;
const long long MOD = 1e9 + 7;
struct Combinatorics {
  long long fac[N], inv[N];
  long long BigMod(long long b, long long p, long long m) {
    long long ret = 1;
    while (p > 0) {
      if (p % 2 == 1) ret = (ret * b) % m;
      p = p >> 1;
      b = (b * b) % m;
    }
    return ret;
  }
  void init() {
    fac[0] = 1;
    for (int i = 1; i < N; i++) fac[i] = (fac[i - 1] * i) % MOD;
    for (int i = 0; i < N; i++) inv[i] = BigMod(fac[i], MOD - 2, MOD);
  }
  long long com(long long n, long long r) {
    if (n < r) return 0;
    long long u = fac[n];
    long long v = (inv[r] * inv[n - r]) % MOD;
    return (u * v) % MOD;
  }
} combi;
int m;
string str;
int dp[505][N];
unordered_map<int, int> mp;
int id;
int cur;
long long pw[N];
void add(int x) {
  if (mp[x] == 0) {
    mp[x] = ++id;
    dp[id][x] = 1;
    for (int i = x + 1; i < N; i++) {
      long long ret =
          (26LL * dp[id][i - 1]) + combi.com(i - 1, x - 1) * pw[i - x];
      dp[id][i] = ret % MOD;
    }
  }
  cur = mp[x];
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(nullptr);
  combi.init();
  pw[0] = 1;
  for (int i = 1; i < N; i++) pw[i] = (pw[i - 1] * 25) % MOD;
  cin >> m;
  cin >> str;
  add(str.size());
  for (int i = 0; i < m; i++) {
    int tp;
    cin >> tp;
    if (tp == 1) {
      cin >> str;
      add(str.size());
    } else {
      int n;
      cin >> n;
      cout << dp[cur][n] << "\n";
    }
  }
}
