#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
long long POW(long long a, long long b, long long MMM = MOD) {
  long long ret = 1;
  for (; b; b >>= 1, a = (a * a) % MMM)
    if (b & 1) ret = (ret * a) % MMM;
  return ret;
}
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
long long lcm(long long a, long long b) {
  if (a == 0 || b == 0) return a + b;
  return a * (b / gcd(a, b));
}
int dx[] = {0, 1, 0, -1, 1, 1, -1, -1}, dy[] = {1, 0, -1, 0, 1, -1, 1, -1};
int c[100001], cc;
char s[100005];
long long pow25[100001], pow26[100001], inv26[100001];
vector<int> v[450];
long long fac[100001];
long long inv[100001];
long long nCr(int n, int r) {
  if (r > n) return 0;
  long long c = fac[n];
  c = (c * inv[r]) % MOD;
  c = (c * inv[n - r]) % MOD;
  return c;
}
void add(long long &a, long long b) { a = (a + b) % MOD; }
long long mul(long long a, long long b) { return (a * b) % MOD; }
void upd(int l) {
  for (int(i) = (0); (i) <= (l - 1); (i) += (1)) v[cc].push_back(0);
  long long sum = 0;
  for (int(k) = (l); (k) <= (100000); (k) += (1)) {
    long long t = mul(nCr(k - 1, l - 1), pow25[k - l]);
    t = mul(t, inv26[k]);
    add(sum, t);
    v[cc].push_back(mul(sum, pow26[k]));
  }
  cc++;
}
int main() {
  pow26[0] = pow25[0] = 1;
  inv26[0] = 1;
  for (int(i) = (1); (i) <= (100000); (i) += (1)) {
    pow25[i] = (pow25[i - 1] * 25) % MOD;
    pow26[i] = (pow26[i - 1] * 26) % MOD;
    inv26[i] = POW(pow26[i], MOD - 2);
  }
  fac[0] = inv[0] = 1;
  for (int(i) = (1); (i) <= (100000); (i) += (1))
    fac[i] = (fac[i - 1] * i) % MOD;
  inv[100000] = POW(fac[100000], MOD - 2);
  for (int(i) = (99999); (i) >= (1); (i) -= (1))
    inv[i] = (inv[i + 1] * (i + 1)) % MOD;
  memset((c), -1, sizeof(c));
  ;
  int q;
  scanf("%d%s", &q, s);
  int n = strlen(s);
  c[n] = cc;
  upd(n);
  while (q--) {
    int o, t;
    scanf("%d", &o);
    if (o == 1) {
      scanf("%s", s);
      n = strlen(s);
      if (c[n] == -1) {
        c[n] = cc;
        upd(n);
      }
    } else {
      scanf("%d", &t);
      printf("%d\n", v[c[n]][t]);
    }
  }
}
