#include <bits/stdc++.h>
using namespace std;
constexpr long long int M = 1000000007;
long long int mpow(long long int a, long long int e) {
  if (e == 0) return 1;
  if (e & 1) {
    return (mpow(a, e - 1) * a) % M;
  }
  long long int x = mpow(a, e >> 1);
  x *= x;
  x %= M;
  return x;
}
vector<int> res[101010];
char S[101010];
long long int p26[101010];
long long int i26[101010];
long long int inv[101010];
void comp(int s) {
  res[s].resize(101010);
  long long int val = i26[s];
  res[s][s] = val;
  for (int x = s + 1; x < 101010; ++x) {
    val *= x - 1;
    val %= M;
    val *= inv[x - s];
    val %= M;
    val *= 25;
    val %= M;
    val *= i26[1];
    val %= M;
    res[s][x] = (res[s][x - 1] + val) % M;
  }
}
int main() {
  p26[0] = 1;
  for (int i = 1; i < 101010; ++i) {
    p26[i] = (p26[i - 1] * 26) % M;
  }
  i26[0] = 1;
  i26[1] = mpow(26, M - 2);
  for (int i = 2; i < 101010; ++i) {
    i26[i] = (i26[i - 1] * i26[1]) % M;
  }
  for (int i = 1; i < 101010; ++i) {
    inv[i] = mpow(i, M - 2);
  }
  int m;
  scanf("%d", &m);
  scanf("%s", S);
  int s = strlen(S);
  comp(s);
  for (int i = 0; i < m; ++i) {
    int t;
    scanf("%d", &t);
    if (t == 1) {
      scanf("%s", S);
      s = strlen(S);
      if (res[s].empty()) comp(s);
    } else {
      int n;
      scanf("%d", &n);
      if (n < s) {
        printf("0\n");
      } else {
        printf("%d\n", (int)((p26[n] * res[s][n]) % M));
      }
    }
  }
  return 0;
}
