#include <bits/stdc++.h>
using namespace std;
template <class T>
int size(const T &x) {
  return x.size();
}
const int INF = 2147483647;
long long mod = 1000000007;
long long p25[200000], p26[200000], p25inv[200000], p26inv[200000], fac[200000],
    ifac[200000];
long long mod_pow(long long a, long long b, long long mod) {
  long long res = 1;
  while (b) {
    if (b & 1) {
      res = res * a % mod;
    }
    a = a * a % mod;
    b >>= 1;
  }
  return res;
}
long long dp(int n, int k) {
  if (k == 0) {
    return p26[n];
  }
  long long res = 0;
  for (int i = 0; i < n; i++) {
    res += dp(n - i - 1, k - 1) * p25[i];
  }
  return res;
}
long long binomial(int n, int k) {
  long long res = 1;
  for (__typeof(1) i = (1); i < (k + 1); ++i) {
    res = res * (n - (k - i)) / i;
  }
  return res;
}
long long cnt(int n, int k) {
  long long res = 0;
  for (int i = k; i <= n; i++) {
    res += p25[i - k] * p26inv[i] % mod * fac[i - 1] % mod * ifac[k - 1] % mod *
           ifac[i - k] % mod;
    res %= mod;
  }
  res = res * p26[n] % mod;
  return res;
}
int **presum;
int curk;
void init(int k) {
  curk = k;
  if (presum[k]) return;
  presum[k] = new int[100000 + 1];
  memset(presum[k], 0, sizeof(int) * (100000 + 1));
  for (int i = k; i <= 100000; i++) {
    long long here = presum[k][i - 1];
    here += p25[i - k] * p26inv[i] % mod * fac[i - 1] % mod * ifac[k - 1] %
            mod * ifac[i - k] % mod;
    here %= mod;
    presum[k][i] = here;
  }
}
int main() {
  presum = new int *[100000 + 1];
  memset(presum, 0, (100000 + 1) * sizeof(int *));
  p25[0] = 1;
  p26[0] = 1;
  p25inv[0] = 1;
  p26inv[0] = 1;
  fac[0] = 1;
  ifac[0] = 1;
  for (int i = 1; i < 200000; i++) {
    p25[i] = 25 * p25[i - 1] % mod;
    p26[i] = 26 * p26[i - 1] % mod;
    p25inv[i] = mod_pow(p25[i], mod - 2, mod);
    p26inv[i] = mod_pow(p26[i], mod - 2, mod);
    fac[i] = i * fac[i - 1] % mod;
    ifac[i] = mod_pow(fac[i], mod - 2, mod);
  }
  int n;
  cin >> n;
  string s;
  cin >> s;
  init(size(s));
  for (__typeof(0) i = (0); i < (n); ++i) {
    int op;
    cin >> op;
    if (op == 2) {
      int n;
      cin >> n;
      cout << ((long long)presum[curk][n] * p26[n] % mod) << endl;
    } else {
      cin >> s;
      init(size(s));
    }
  }
  return 0;
}
