#include <bits/stdc++.h>
using namespace std;
struct Math {
  static int egcd(int a, int b) {
    int r = a, o_r = b;
    int s = 0, o_s = 1;
    int t = 1, o_t = 0;
    while (r != 0) {
      int q = o_r / r;
      int tem;
      tem = r;
      r = o_r - r * q;
      o_r = tem;
      tem = o_s;
      o_s = o_s - s * q;
      o_s = tem;
      tem = t;
      t = o_t - t * q;
      o_t = tem;
    }
    return o_t;
  }
  static int MOD;
  static long long divide(long long a, long long b) {
    return (((egcd(b, MOD) % MOD + MOD) % MOD) * a) % MOD;
  }
  static int fact(int n) {
    static vector<int> F;
    if (F.size() <= n) {
      int oSZ = F.size();
      F.resize(n + 1);
      if (oSZ == 0) F[0] = 1, oSZ++;
      for (int i = oSZ; i <= n; ++i) F[i] = (1LL * F[i - 1] * i) % MOD;
    }
    return F[n];
  }
  static int catalan(int n) { return divide(ncr(2 * n, n), n + 1); }
  static int ncr(int n, int k) {
    if (k < 0 || n < 0 || n < k) return 0;
    return divide(fact(n), (1LL * fact(k) * fact(n - k)) % MOD);
  }
  static int mul(int a, int b) { return (1LL * (a % MOD) * (b % MOD)) % MOD; }
  static int mul(int a, int b, int c) {
    return (1LL * mul(a, b) * (c % MOD)) % MOD;
  }
  static int mul(int a, int b, int c, int d) {
    return (1LL * mul(a, b) * mul(c, d)) % MOD;
  }
};
int Math::MOD = 1000000007;
int po25[100010];
int po26[100010];
char S[100010];
vector<int> MMM[100010];
int ASS[100010], IDX = 1;
void init() {
  int N = strlen(S);
  if (ASS[N]) {
    return;
  }
  ASS[N] = IDX;
  vector<int> ANS = vector<int>(100010, 0);
  int nc = 1;
  for (int R = N; R < 100010; ++R) {
    if (R == N) {
      ANS[R] = 1;
    } else {
      long long p = 26LL * ANS[R - 1];
      nc = (1LL * (R - 1) * nc) % 1000000007;
      nc = Math::divide(nc, R - N);
      long long t = (1LL * po25[R - N] * nc);
      ANS[R] = (p + t) % 1000000007;
    }
  }
  MMM[IDX] = ANS;
  IDX++;
}
int main() {
  po25[0] = po26[0] = 1;
  for (int i = 1; i < 100010; ++i) {
    po25[i] = (25LL * po25[i - 1]) % 1000000007;
    po26[i] = (26LL * po26[i - 1]) % 1000000007;
  }
  int M;
  scanf("%d", &M);
  scanf("%s", S);
  init();
  int SZ = strlen(S);
  int ID = 1;
  for (int i = 0; i < M; ++i) {
    int t = i % 2 ? 1 : 2;
    scanf("%d", &t);
    if (t == 1) {
      scanf("%s", S);
      init();
      SZ = strlen(S);
      ID = ASS[SZ];
    } else {
      int N = 0;
      scanf("%d", &N);
      printf("%d\n", MMM[ID][N]);
    }
  }
}
