#include <bits/stdc++.h>
using namespace std;
struct Query {
  int len, n, id;
  bool operator<(const Query &r) const {
    return len < r.len || len == r.len && n < r.n;
  }
};
char S[200001];
long long pot25[200001], pot26[200001], fact[200001], rfact[200001],
    ans[100001];
Query q[100001];
long long fastPow(long long x, long long n) {
  long long ret = 1;
  while (n) {
    if (n & 1) ret = ret * x % 1000000007;
    x = x * x % 1000000007;
    n >>= 1;
  }
  return ret;
}
long long NK(int N, int K) {
  return fact[N] * rfact[K] % 1000000007 * rfact[N - K] % 1000000007;
}
int main() {
  fact[0] = pot25[0] = pot26[0] = 1;
  for (int i = int(1); i < int(200001); i++) {
    pot25[i] = pot25[i - 1] * 25LL % 1000000007;
    pot26[i] = pot26[i - 1] * 26LL % 1000000007;
    fact[i] = fact[i - 1] * i % 1000000007;
  }
  rfact[200001 - 1] = fastPow(fact[200001 - 1], 1000000007 - 2);
  for (int i = 200001 - 2; i >= 0; i--) {
    rfact[i] = rfact[i + 1] * (i + 1) % 1000000007;
  }
  int M, t, n, len, qc;
  while (scanf("%d", &M) != EOF) {
    scanf("%s", S);
    qc = 1;
    len = strlen(S);
    for (int i = int(0); i < int(M); i++) {
      scanf("%d", &t);
      if (t == 2) {
        scanf("%d", &n);
        q[qc] = Query{len, n - len, qc};
        qc++;
      } else {
        scanf("%s", S);
        len = strlen(S);
      }
    }
    sort(q + 1, q + qc);
    int m = 0;
    long long ac = 0;
    q[0].len = -1;
    for (int i = int(1); i < int(qc); i++) {
      if (q[i].len != q[i - 1].len) {
        m = 0;
        ac = 0;
        for (int j = int(0); j < int(q[i].n + 1); j++) {
          ac += pot26[j] * pot25[q[i].n - j] % 1000000007 *
                NK(q[i].len + q[i].n - j - 1, q[i].n - j) % 1000000007;
        }
      } else {
        int t = q[i].n - q[i - 1].n;
        for (int j = int(0); j < int(t); j++) {
          ac = ac * 26 % 1000000007;
        }
        for (int j = int(0); j < int(t); j++) {
          if (q[i].n - j < 0) continue;
          ac += pot26[j] * pot25[q[i].n - j] % 1000000007 *
                NK(q[i].len + q[i].n - j - 1, q[i].n - j) % 1000000007;
        }
      }
      ans[q[i].id] = ac %= 1000000007;
    }
    for (int i = int(1); i < int(qc); i++) {
      printf("%lld\n", ans[i]);
    }
  }
  return 0;
}
