#include<bits/stdc++.h>
using namespace std;
vector<int> kmp(string a, string b) {
int k[b.length()];
k[0] = 0;
int i = 1, j = 0;
while (i < b.size()) {
if (b[i] == b[j])
k[i] = j + 1, i++, j++;
else if (j == 0)
k[i] = 0, i++;
else
j = k[j - 1];
}
vector<int> v;
i = j = 0;
while (i < a.size()) {
if (j == b.size())
v.push_back(i - j), j = k[j - 1];
else if (a[i] == b[j])
i++, j++;
else if (j == 0)
i++;
else
j = k[j - 1];
}
if (j == b.size())
v.push_back(i - j);
return v;
}
//main code
int main()
{
int T;
cin >> T;
while (T--) {
string s, t;
cin >> t >> s;
string p = "";
int n = s.size(), m = t.size();
vector<string> parts;
for (int i = 0; i < m; i++) {
if (t[i] == '*') {
if (p != "")
parts.push_back(p), p = "";
}
else
p += t[i];
}
if (p != "")
parts.push_back(p);
if (parts.size() == 0) {
for (int i = 0; i < n; i++)
cout << i + 1 << " ";
}
else {
vector<int> dp;
for (int i = 0; i < n; i++)
dp.push_back(i - 1);
for (auto part : parts) {
vector<int> temp = kmp(s, part);
for (int i = 0, j = 0; i < n && dp[i] != -2; i++) {
if (j == temp.size())
dp[i] = -2;
else if (dp[i] >= temp[j])
j++, i--;
else
dp[i] = temp[j] + part.size() - 1;
}
}
for (int i = 0; i < dp.size(); i++)
cout << dp[i] + 1 << " ";
}
cout << "\n";
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2ZWN0b3I8aW50PiBrbXAoc3RyaW5nIGEsIHN0cmluZyBiKSB7CglpbnQga1tiLmxlbmd0aCgpXTsKCWtbMF0gPSAwOwoJaW50IGkgPSAxLCBqID0gMDsKCXdoaWxlIChpIDwgYi5zaXplKCkpIHsKCQlpZiAoYltpXSA9PSBiW2pdKQoJCQlrW2ldID0gaiArIDEsIGkrKywgaisrOwoJCWVsc2UgaWYgKGogPT0gMCkKCQkJa1tpXSA9IDAsIGkrKzsKCQllbHNlCgkJCWogPSBrW2ogLSAxXTsKCX0KCgl2ZWN0b3I8aW50PiB2OwoJaSA9IGogPSAwOwoJd2hpbGUgKGkgPCBhLnNpemUoKSkgewoJCWlmIChqID09IGIuc2l6ZSgpKQoJCQl2LnB1c2hfYmFjayhpIC0gaiksIGogPSBrW2ogLSAxXTsKCQllbHNlIGlmIChhW2ldID09IGJbal0pCgkJCWkrKywgaisrOwoJCWVsc2UgaWYgKGogPT0gMCkKCQkJaSsrOwoJCWVsc2UKCQkJaiA9IGtbaiAtIDFdOwoJfQoJaWYgKGogPT0gYi5zaXplKCkpCgkJdi5wdXNoX2JhY2soaSAtIGopOwoJcmV0dXJuIHY7Cn0KLy9tYWluIGNvZGUKaW50IG1haW4oKQp7CglpbnQgVDsKCWNpbiA+PiBUOwoJd2hpbGUgKFQtLSkgewoJCXN0cmluZyBzLCB0OwoJCWNpbiA+PiB0ID4+IHM7CgkJc3RyaW5nIHAgPSAiIjsKCQlpbnQgbiA9IHMuc2l6ZSgpLCBtID0gdC5zaXplKCk7CgkJdmVjdG9yPHN0cmluZz4gcGFydHM7CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBtOyBpKyspIHsKCQkJaWYgKHRbaV0gPT0gJyonKSB7CgkJCQlpZiAocCAhPSAiIikKCQkJCQlwYXJ0cy5wdXNoX2JhY2socCksIHAgPSAiIjsKCQkJfQoJCQllbHNlCgkJCQlwICs9IHRbaV07CgkJfQoJCWlmIChwICE9ICIiKQoJCQlwYXJ0cy5wdXNoX2JhY2socCk7CgoJCWlmIChwYXJ0cy5zaXplKCkgPT0gMCkgewoJCQlmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKCQkJCWNvdXQgPDwgaSArIDEgPDwgIiAiOwoJCX0KCQllbHNlIHsKCQkJdmVjdG9yPGludD4gZHA7CgkJCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQoJCQkJZHAucHVzaF9iYWNrKGkgLSAxKTsKCgkJCWZvciAoYXV0byBwYXJ0IDogcGFydHMpIHsKCQkJCXZlY3RvcjxpbnQ+IHRlbXAgPSBrbXAocywgcGFydCk7CgkJCQlmb3IgKGludCBpID0gMCwgaiA9IDA7IGkgPCBuICYmIGRwW2ldICE9IC0yOyBpKyspIHsKCQkJCQlpZiAoaiA9PSB0ZW1wLnNpemUoKSkKCQkJCQkJZHBbaV0gPSAtMjsKCQkJCQllbHNlIGlmIChkcFtpXSA+PSB0ZW1wW2pdKQoJCQkJCQlqKyssIGktLTsKCQkJCQllbHNlCgkJCQkJCWRwW2ldID0gdGVtcFtqXSArIHBhcnQuc2l6ZSgpIC0gMTsKCQkJCX0KCQkJfQoKCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBkcC5zaXplKCk7IGkrKykKCQkJCWNvdXQgPDwgZHBbaV0gKyAxIDw8ICIgIjsKCQl9CgkJY291dCA8PCAiXG4iOwoJfQoJcmV0dXJuIDA7Cn0=