#include <bits/stdc++.h>
using namespace std;
class query {
 public:
  int n, s, i;
};
const long long mod = 1e9 + 7, abc = 26;
long long pwr(long long a, long long b) {
  if (!b) return 1;
  long long h = pwr(a, (b >> 1));
  h = (h * h) % mod;
  if (b & 1) h = (h * a) % mod;
  return h;
}
bool cmp(query& qa, query& qb) { return qa.n < qb.n; }
vector<long long> f(100079, 1), invf(100079, 1);
long long c(long long n, long long k) {
  return (((f[n] * invf[k]) % mod) * invf[n - k]) % mod;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  for (long long i = 1; i < f.size(); i++) {
    f[i] = (f[i - 1] * i) % mod;
    invf[i] = pwr(f[i], mod - 2);
  }
  int q;
  cin >> q;
  vector<int> ans(q, -1);
  string s;
  cin >> s;
  vector<vector<query> > v(100079);
  for (int i = 0; i < q; i++) {
    int t;
    cin >> t;
    if (t == 1)
      cin >> s;
    else {
      query qi;
      cin >> qi.n;
      qi.i = i;
      qi.s = s.size();
      v[qi.s].push_back(qi);
    }
  }
  for (long long i = 0; i < v.size(); i++) {
    if (!v[i].empty()) {
      sort(v[i].begin(), v[i].end(), cmp);
      long long val = 0, iabc = pwr(abc, mod - 2), abcn = 1, inv = pwr(iabc, i);
      long long k = i;
      for (int j = 0; j < v[i].size(); j++) {
        while (k <= v[i][j].n) {
          val += (((c(k - 1, i - 1) * abcn) % mod) * inv) % mod;
          if (val >= mod) val -= mod;
          inv = (inv * iabc) % mod;
          abcn = (abcn * (abc - 1)) % mod;
          k++;
        }
        ans[v[i][j].i] = (val * pwr(abc, v[i][j].n)) % mod;
      }
    }
  }
  for (int i = 0; i < q; i++)
    if (ans[i] != -1) cout << ans[i] << "\n";
  return 0;
}
