#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
const int INF = 1000000001;
const long long int LLINF = 1000000000000000001LL;
long long int expo(long long int a, long long int n) {
  long long int ans = 1;
  while (n) {
    if (n & 1LL) ans = (ans * a) % MOD;
    n >>= 1;
    a = (a * a) % MOD;
  }
  return ans;
}
long long int revMod(long long int a) { return expo(a, MOD - 2); }
const int ALPH = 'z' - 'a' + 1;
const int N = 100002;
long long int fact[N];
long long int revFact[N];
long long int alpMinOnePow[N];
long long int binom(int n, int m) {
  if (n < m) return 0;
  long long int ans = (fact[n] * revFact[n - m]) % MOD;
  return (ans * revFact[m]) % MOD;
}
void prep() {
  fact[0] = revFact[0] = 1;
  for (int i = (1); i <= (N - 1); ++i) {
    fact[i] = (fact[i - 1] * i) % MOD;
    revFact[i] = revMod(fact[i]);
  }
  alpMinOnePow[0] = 1;
  for (int i = (1); i <= (N - 1); ++i) {
    alpMinOnePow[i] = (alpMinOnePow[i - 1] * (ALPH - 1)) % MOD;
  }
}
map<int, vector<int> > answers;
int storeAnswers(int k) {
  answers[k] = vector<int>(k, 0);
  answers[k].push_back(1);
  long long int ans = 1;
  for (int i = (k + 1); i <= (N); ++i) {
    long long int add = (alpMinOnePow[i - k] * binom(i - 1, k - 1)) % MOD;
    ans = (ans * ALPH) % MOD;
    ans = (ans + add) % MOD;
    answers[k].push_back(ans);
  }
  return ans;
}
int main() {
  ios_base::sync_with_stdio(0);
  prep();
  int t;
  cin >> t;
  string s;
  cin >> s;
  int k = (int)(s).size();
  if (!answers.count(k)) {
    storeAnswers(k);
  }
  while (t--) {
    int type;
    cin >> type;
    if (type == 1) {
      cin >> s;
      k = (int)(s).size();
      if (!answers.count(k)) {
        storeAnswers(k);
      }
    } else {
      int n;
      cin >> n;
      cout << answers[k][n] << '\n';
    }
  }
  return 0;
}
