#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5, MOD = 1e9 + 7, SQ = 450;
int m;
long long fac[N], inv[N];
int mark[N], dp[SQ][N], mx[SQ + 10];
string s;
long long pw(long long a, long long b) {
  if (b == 0) return 1LL;
  return pw(a * a % MOD, b / 2) * (b % 2 ? a : 1LL) % MOD;
}
inline long long c(int k, int n) {
  if (k < 0 || k > n) return 0;
  long long ans = (fac[n] * inv[k]) % MOD;
  ans = (ans * inv[n - k]) % MOD;
  return ans;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  fac[0] = 1, inv[0] = 1;
  for (int i = 1; i < N; i++)
    fac[i] = (1LL * fac[i - 1] * i) % MOD, inv[i] = pw(fac[i], MOD - 2LL) % MOD,
    mark[i] = 0;
  int cur = 1;
  cin >> m >> s;
  while (m) {
    m--;
    int t;
    cin >> t;
    if (t == 1)
      cin >> s;
    else {
      int n;
      cin >> n;
      if (!mark[s.size()])
        mark[s.size()] = cur, dp[cur][s.size()] = 1, mx[cur] = s.size(), cur++;
      long long p = 0;
      for (int i = mx[mark[s.size()]] + 1; i <= n; i++) {
        if (i == mx[mark[s.size()]] + 1)
          p = pw(25LL, i - s.size());
        else
          p = p * 25LL % MOD;
        dp[mark[s.size()]][i] = dp[mark[s.size()]][i - 1] * 26LL % MOD;
        dp[mark[s.size()]][i] =
            1LL *
            (1LL * dp[mark[s.size()]][i] + c(s.size() - 1, i - 1) * p % MOD) %
            MOD;
      }
      mx[mark[s.size()]] = max(mx[mark[s.size()]], n);
      cout << dp[mark[s.size()]][n] << '\n';
    }
  }
  return 0;
}
