#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn = 1e6+10;
char s[maxn];
string m[maxn];
queue<int> q;
int stk[maxn],k[maxn],n,tp,cnt;
vector<int> ec[maxn],tip[maxn];
struct { int s[26],p; }t[maxn];
inline void insert(int id,const char str[]) {
int u = 0;
for(int i = 0;str[i];++i) {
const auto c = str[i] - 'a';
if(!t[u].s[c]) t[u].s[c] = ++cnt;
u = t[u].s[c];
}
ec[u].push_back(id);
}
inline void build() {
for(int i = 0;i<26;++i) if(t[0].s[i]) q.push(t[0].s[i]);
while(!q.empty()) {
const int u = q.front(), p = t[u].p; q.pop();
stk[++tp] = u;
for(int i = 0;i<26;++i)
if(t[u].s[i]) t[u].s[i][t].p = t[p].s[i], q.push(t[u].s[i]);
else t[u].s[i] = t[p].s[i];
}
}
inline void init(const char str[]) {
int u = 0;
for(int i = 0;str[i];++i) {
u = t[u].s[str[i]-'a'];
for(auto s: ec[u]) tip[s].push_back(i);
}
for(int i = tp;i;--i) {
auto& cur = tip[stk[i]],& pre = tip[stk[i][t].p];
auto psiz = pre.size();
for(auto pos: cur) pre.push_back(pos);
inplace_merge(pre.begin(),pre.begin()+psiz,pre.end());
unique(pre.begin(),pre.end());
}
}
signed main() {
ios::sync_with_stdio(0),cin.tie(0);
// ifstream ifs(".in");
// ofstream ofs(".out");
// cin.rdbuf(ifs.rdbuf()),cout.rdbuf(ofs.rdbuf());
cin>>s>>n;
for(int i = 1;i<=n;++i)
cin>>k[i]>>m[i],
insert(i,m[i].data());
build(),init(s);
for(int i = 1;i<=n;++i) {
int ans = maxn*maxn,tcnt = tip[i].size();
for(int l = 0,r = k[i]-1;r < tcnt;++l,++r) ans = min(ans,tip[i][r]-tip[i][l]);
if(ans == maxn*maxn) cout<<"-1\n";
else cout<<ans+m[i].size()<<'\n';
}
}
错哪里了。。。