#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
const int MAX_N = 100001;
pair<long long, long long> extgcd(long long a, long long b) {
  if (b == 0) {
    return make_pair(1, 0);
  } else {
    long long x, y;
    tie(x, y) = extgcd(b, a % b);
    return make_pair(y, x - (a / b) * y);
  }
}
long long mod_inverse(long long a, long long m) {
  long long x, y;
  tie(x, y) = extgcd(a, m);
  return (m + x % m) % m;
}
long long fact[MAX_N], ifact[MAX_N], p25[MAX_N], p26[MAX_N];
long long comb(long long n, long long r) {
  if (n < 0 || r < 0 || r > n) return 0;
  return fact[n] * ifact[n - r] % MOD * ifact[r] % MOD;
}
long long mod_pow(long long x, long long y) {
  long long r = 1;
  while (y > 0) {
    if (y & 1) r = r * x % MOD;
    x = x * x % MOD;
    y >>= 1;
  }
  return r;
}
char buf[MAX_N];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  fact[0] = 1;
  ifact[0] = mod_inverse(fact[0], MOD);
  p25[0] = 1;
  p26[0] = 1;
  for (int i = 1; i < MAX_N; i++) {
    fact[i] = i * fact[i - 1] % MOD;
    ifact[i] = mod_inverse(fact[i], MOD);
    p25[i] = 25 * p25[i - 1] % MOD;
    p26[i] = 26 * p26[i - 1] % MOD;
  }
  int q;
  scanf("%d", &q);
  string s;
  int m;
  scanf("%s", buf);
  int len = strlen(buf);
  vector<vector<int>> memo(MAX_N);
  while (q--) {
    if (memo[len].empty()) {
      long long t = 1;
      for (int i = len; i < MAX_N; i++) {
        memo[len].push_back(t);
        int plen = len - 1;
        t = (26 * t + p25[i - plen] * comb(i, i - plen)) % MOD;
      }
    }
    int t;
    scanf("%d", &t);
    if (t == 1) {
      scanf("%s", buf);
      len = strlen(buf);
    } else if (t == 2) {
      scanf("%d", &m);
      long long ans = 0;
      if (m < len) {
        printf("%d\n", 0);
      } else {
        printf("%d\n", memo[len][m - len]);
      }
    } else {
      assert(false);
    }
  }
}
