#include <bits/stdc++.h>
using namespace std;
template <class T>
bool umin(T& a, T b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
bool umax(T& a, T b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
int arr[100009], query[100009], id[100009];
int fac[100009], inv[100009];
int pw[3][100009], ans[455][100009];
char s[100009];
vector<int> v;
void get(int pos) {
  scanf("%s", s);
  int sz = strlen(s);
  arr[pos] = sz;
  v.push_back(sz);
}
int mod(long long x) { return (x % 1000000007); }
int C(int x, int y) {
  if (x < y) return 0;
  return mod(fac[x] * 1LL * mod(inv[y] * 1LL * inv[x - y]));
}
int Fe(int x, int y) {
  if (!y) return 1;
  int h = Fe(x, y / 2);
  h = mod(h * 1LL * h);
  if (y & 1) h = mod(h * 1LL * x);
  return h;
}
void build() {
  fac[0] = inv[0] = 1;
  for (int i = 0; i < 3; i++) pw[i][0] = 1;
  for (int i = 1; i < 100009; i++) {
    fac[i] = mod(fac[i - 1] * 1LL * i);
    pw[0][i] = mod(pw[0][i - 1] * 25LL);
    pw[1][i] = mod(pw[1][i - 1] * 26LL);
  }
  inv[100009 - 1] = Fe(fac[100009 - 1], 1000000007 - 2);
  pw[2][100009 - 1] = Fe(pw[1][100009 - 1], 1000000007 - 2);
  for (int i = 100009 - 2; i >= 1; i--) {
    inv[i] = mod(inv[i + 1] * 1LL * (i + 1));
    pw[2][i] = mod(pw[2][i + 1] * 26LL);
  }
}
int main() {
  build();
  int q;
  scanf("%d", &q);
  get(0);
  for (int i = 1; i <= q; i++) {
    int t;
    scanf("%d", &t);
    if (t == 1)
      get(i);
    else {
      int x;
      scanf("%d", &x);
      query[i] = x;
    }
  }
  sort(v.begin(), v.end());
  v.erase(unique(v.begin(), v.end()), v.end());
  for (int i = 0; i < int(v.size()); i++) {
    id[v[i]] = i;
    for (int j = v[i]; j < 100009; j++)
      ans[i][j] =
          mod(ans[i][j - 1] + mod(C(j - 1, v[i] - 1) * 1LL *
                                  mod(pw[0][j - v[i]] * 1LL * pw[2][j])));
    for (int j = 1; j < 100009; j++)
      ans[i][j] = mod(ans[i][j] * 1LL * pw[1][j]);
  }
  int last = id[arr[0]];
  for (int i = 1; i <= q; i++) {
    if (arr[i])
      last = id[arr[i]];
    else
      printf("%d\n", ans[last][query[i]]);
  }
  return 0;
}
