#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int MAXN = 1e5 + 10;
const int M = 1e5;
const int SIG = 26;
int Q, ans[MAXN], pw[MAXN], fac[MAXN], inv[MAXN];
char s[MAXN];
void lucky() { scanf("%d %s", &Q, s); }
int C(int n, int k) {
  return ((((long long)fac[n] * inv[k]) % MOD) * inv[n - k]) % MOD;
}
void build(int n) {
  memset(ans, 0, sizeof(ans));
  for (int i = n; i <= M; i++)
    ans[i] =
        ((long long)ans[i - 1] * SIG + (long long)pw[i - n] * C(i - 1, n - 1)) %
        MOD;
}
int qpow(long long a, int e) {
  int res = 1;
  while (e) {
    if (e & 1) res = (res * a) % MOD;
    e >>= 1, a = (a * a) % MOD;
  }
  return res;
}
void prep() {
  pw[0] = fac[0] = 1;
  for (int i = 1; i <= M; i++) {
    pw[i] = ((long long)pw[i - 1] * (SIG - 1)) % MOD;
    fac[i] = ((long long)fac[i - 1] * i) % MOD;
  }
  inv[M] = qpow(fac[M], MOD - 2);
  for (int i = M; i > 1; i--) inv[i - 1] = ((long long)inv[i] * i) % MOD;
  inv[0] = 1;
}
int main() {
  lucky();
  prep();
  build(strlen(s));
  while (Q--) {
    int opt;
    scanf("%d", &opt);
    if (opt == 1) {
      scanf("%s", s);
      build(strlen(s));
    } else {
      int m;
      scanf("%d", &m);
      printf("%d\n", ans[m]);
    }
  }
  return 0;
}
