#include<bits/stdc++.h>
using namespace std;
template<typename X, typename Y>
bool chmax(X& a, Y b) { return (a < b) ? a = b, 1 : 0; }
template<typename X, typename Y>
bool chmin(X& a, Y b) { return (a > b) ? a = b, 1 : 0; }
using ll = long long;
const int N = 1e5+5;
int k;
string s;
struct State {
int next[26], link, len;
State() {
memset(next, 0, sizeof(next));
}
} sam[2 * N];
int sz, last;
int cnt[2 * N], pos[2 * N];
void init() {
sam[0].len = 0;
sam[0].link = -1;
sz = 1; last = 0;
}
void extend(char ch, int idx) {
int c = ch - 'a';
int u = sz++;
sam[u].len = sam[last].len + 1;
cnt[u] = 1; pos[u] = idx;
int p = last;
while (p != -1 && !sam[p].next[c]) {
sam[p].next[c] = u;
p = sam[p].link;
}
if (p == -1) sam[u].link = 0;
else {
int q = sam[p].next[c];
if (sam[p].len + 1 == sam[q].len) sam[u].link = q;
else {
int v = sz++;
sam[v].len = sam[p].len + 1;
sam[v].link = sam[q].link;
memcpy(sam[v].next, sam[q].next, sizeof(sam[q].next));
cnt[v] = 0;
pos[v] = pos[q];
while (p != -1 && sam[p].next[c] == q) {
sam[p].next[c] = v;
p = sam[p].link;
}
sam[q].link = sam[u].link = v;
}
}
last = u;
}
void push_up() {
vector<int> order(sz, 0);
for (int i = 0; i < sz; i++) order[i] = i;
sort(order.begin(), order.end(), [](int x, int y) {
return sam[x].len > sam[y].len;
});
for (int u : order) {
int p = sam[u].link;
if (p != -1) {
cnt[p] += cnt[u];
chmin(pos[p], pos[u]);
}
}
}
int query_cnt(string s) {
int u = 0;
for (char ch : s) {
int c = ch - 'a';
if (!sam[u].next[c]) return 0;
u = sam[u].next[c];
}
return cnt[u];
}
int query_pos(string s) {
int u = 0;
for (char ch : s) {
int c = ch - 'a';
if (!sam[u].next[c]) return -1;
u = sam[u].next[c];
}
return pos[u];
}
void solve() {
cin >> s;
int n = s.size();
s = " " + s;
init();
for (int i = 1; i <= n; i++) extend(s[i], i);
push_up();
cin >> k;
for (int i = 0; i < k; i++) {
string p; cin >> p;
int pos = query_pos(p);
cout << query_cnt(p) << ' ' << (pos == -1 ? pos : pos - (int)p.size() + 1) << '\n';
}
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
int tests = 1; // cin >> tests;
while (tests--) solve();
#ifdef LOCAL
cerr << "\nTime elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+CmJvb2wgY2htYXgoWCYgYSwgWSBiKSB7IHJldHVybiAoYSA8IGIpID8gYSA9IGIsIDEgOiAwOyB9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgpib29sIGNobWluKFgmIGEsIFkgYikgeyByZXR1cm4gKGEgPiBiKSA/IGEgPSBiLCAxIDogMDsgfQoKdXNpbmcgbGwgPSBsb25nIGxvbmc7Cgpjb25zdCBpbnQgTiA9IDFlNSs1OwoKaW50IGs7CnN0cmluZyBzOwoKc3RydWN0IFN0YXRlIHsKICAgIGludCBuZXh0WzI2XSwgbGluaywgbGVuOwogICAgU3RhdGUoKSB7CiAgICAgICAgbWVtc2V0KG5leHQsIDAsIHNpemVvZihuZXh0KSk7CiAgICB9Cn0gc2FtWzIgKiBOXTsKCmludCBzeiwgbGFzdDsKaW50IGNudFsyICogTl0sIHBvc1syICogTl07Cgp2b2lkIGluaXQoKSB7CiAgICBzYW1bMF0ubGVuID0gMDsKICAgIHNhbVswXS5saW5rID0gLTE7CiAgICBzeiA9IDE7IGxhc3QgPSAwOwp9Cgp2b2lkIGV4dGVuZChjaGFyIGNoLCBpbnQgaWR4KSB7CiAgICBpbnQgYyA9IGNoIC0gJ2EnOwogICAgaW50IHUgPSBzeisrOwogICAgc2FtW3VdLmxlbiA9IHNhbVtsYXN0XS5sZW4gKyAxOwogICAgY250W3VdID0gMTsgcG9zW3VdID0gaWR4OwogICAgaW50IHAgPSBsYXN0OwogICAgd2hpbGUgKHAgIT0gLTEgJiYgIXNhbVtwXS5uZXh0W2NdKSB7CiAgICAgICAgc2FtW3BdLm5leHRbY10gPSB1OwogICAgICAgIHAgPSBzYW1bcF0ubGluazsKICAgIH0KICAgIGlmIChwID09IC0xKSBzYW1bdV0ubGluayA9IDA7CiAgICBlbHNlIHsKICAgICAgICBpbnQgcSA9IHNhbVtwXS5uZXh0W2NdOwogICAgICAgIGlmIChzYW1bcF0ubGVuICsgMSA9PSBzYW1bcV0ubGVuKSBzYW1bdV0ubGluayA9IHE7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGludCB2ID0gc3orKzsKICAgICAgICAgICAgc2FtW3ZdLmxlbiA9IHNhbVtwXS5sZW4gKyAxOwogICAgICAgICAgICBzYW1bdl0ubGluayA9IHNhbVtxXS5saW5rOwogICAgICAgICAgICBtZW1jcHkoc2FtW3ZdLm5leHQsIHNhbVtxXS5uZXh0LCBzaXplb2Yoc2FtW3FdLm5leHQpKTsKICAgICAgICAgICAgY250W3ZdID0gMDsKICAgICAgICAgICAgcG9zW3ZdID0gcG9zW3FdOwogICAgICAgICAgICB3aGlsZSAocCAhPSAtMSAmJiBzYW1bcF0ubmV4dFtjXSA9PSBxKSB7CiAgICAgICAgICAgICAgICBzYW1bcF0ubmV4dFtjXSA9IHY7CiAgICAgICAgICAgICAgICBwID0gc2FtW3BdLmxpbms7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2FtW3FdLmxpbmsgPSBzYW1bdV0ubGluayA9IHY7CiAgICAgICAgfQogICAgfQogICAgbGFzdCA9IHU7Cn0KCnZvaWQgcHVzaF91cCgpIHsKICAgIHZlY3RvcjxpbnQ+IG9yZGVyKHN6LCAwKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3o7IGkrKykgb3JkZXJbaV0gPSBpOwogICAgc29ydChvcmRlci5iZWdpbigpLCBvcmRlci5lbmQoKSwgW10oaW50IHgsIGludCB5KSB7CiAgICAgICAgcmV0dXJuIHNhbVt4XS5sZW4gPiBzYW1beV0ubGVuOwogICAgfSk7CiAgICBmb3IgKGludCB1IDogb3JkZXIpIHsKICAgICAgICBpbnQgcCA9IHNhbVt1XS5saW5rOwogICAgICAgIGlmIChwICE9IC0xKSB7CiAgICAgICAgICAgIGNudFtwXSArPSBjbnRbdV07CiAgICAgICAgICAgIGNobWluKHBvc1twXSwgcG9zW3VdKTsKICAgICAgICB9CiAgICB9Cn0KCmludCBxdWVyeV9jbnQoc3RyaW5nIHMpIHsKICAgIGludCB1ID0gMDsKICAgIGZvciAoY2hhciBjaCA6IHMpIHsKICAgICAgICBpbnQgYyA9IGNoIC0gJ2EnOwogICAgICAgIGlmICghc2FtW3VdLm5leHRbY10pIHJldHVybiAwOwogICAgICAgIHUgPSBzYW1bdV0ubmV4dFtjXTsKICAgIH0KICAgIHJldHVybiBjbnRbdV07Cn0KCmludCBxdWVyeV9wb3Moc3RyaW5nIHMpIHsKICAgIGludCB1ID0gMDsKICAgIGZvciAoY2hhciBjaCA6IHMpIHsKICAgICAgICBpbnQgYyA9IGNoIC0gJ2EnOwogICAgICAgIGlmICghc2FtW3VdLm5leHRbY10pIHJldHVybiAtMTsKICAgICAgICB1ID0gc2FtW3VdLm5leHRbY107CiAgICB9CiAgICByZXR1cm4gcG9zW3VdOwp9Cgp2b2lkIHNvbHZlKCkgewogICAgY2luID4+IHM7CiAgICBpbnQgbiA9IHMuc2l6ZSgpOwogICAgcyA9ICIgIiArIHM7CiAgICBpbml0KCk7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGV4dGVuZChzW2ldLCBpKTsKICAgIHB1c2hfdXAoKTsKICAgIGNpbiA+PiBrOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrOyBpKyspIHsKICAgICAgICBzdHJpbmcgcDsgY2luID4+IHA7CiAgICAgICAgaW50IHBvcyA9IHF1ZXJ5X3BvcyhwKTsKICAgICAgICBjb3V0IDw8IHF1ZXJ5X2NudChwKSA8PCAnICcgPDwgKHBvcyA9PSAtMSA/IHBvcyA6IHBvcyAtIChpbnQpcC5zaXplKCkgKyAxKSA8PCAnXG4nOwogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKE5VTEwpOwoKICAgIGludCB0ZXN0cyA9IDE7IC8vIGNpbiA+PiB0ZXN0czsKICAgIHdoaWxlICh0ZXN0cy0tKSBzb2x2ZSgpOwoKICAgICNpZmRlZiBMT0NBTAogICAgY2VyciA8PCAiXG5UaW1lIGVsYXBzZWQ6ICIgPDwgMS4wICogY2xvY2soKSAvIENMT0NLU19QRVJfU0VDIDw8ICIgcy5cbiI7CiAgICAjZW5kaWYKICAgIHJldHVybiAwOwp9