#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair <int, int>
#define fi first
#define se second
const int MAXN= 1e5+5;
const int MOD = 1e9+7;
const int base = 29;
int n, lx, ly, kpk, px[MAXN], py[MAXN], p[MAXN];
string x, y;
vector <int> ans;
bool sama (int ix, int iy, int len){
int prefx = (px[ix+len] - px[ix]+ MOD)%MOD;
int prefy = (py[iy+len] - py[iy] + MOD ) % MOD;
if (ix > iy){
prefy = prefy*p[ix-iy]%MOD;
}
else if( iy > ix){
prefx = prefx*p[iy-ix]%MOD;
}
return prefx == prefy;
}
signed main(){
ios_base:: sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
// ubah string ke angka dengan pangkat 29 (prefix sum)
cin >> n >> x >> y;
lx = x.size();
ly = y.size();
kpk = (ly*lx)/__gcd(lx,ly);
p[0] =1;
// x
for (int i =0; i < lx; i++){
p[i+1] = p[i]*base%MOD;
px[i+1] = ((x[i]-'a'+1)*p[i]+px[i]) %MOD;
}
// y
for (int i =0; i < ly; i++){
p[i+1] = p[i]*base%MOD;
py[i+1] = ((y[i]-'a'+1)*p[i]+py[i]) %MOD;
}
// cari angka pertama yang salah
int i =0;
while( i <kpk && ans.size() < n){
int ix = i %lx, iy = i %ly;
int l =1, r = min(lx-ix, ly-iy);
if (sama (ix, iy, r)){
i+= r;
continue;
}
int res = r;
// yang panjang r udah di cek diatas
r--;
while( l <= r){
int mid = (l +r)/2;
if (sama(ix, iy, mid)){
l = mid +1;
}
// cari yang beda pertama
else {
r= mid -1;
res = mid;
}
}
ans.push_back(i+res-1);
i += res;
}
if (ans.empty()){
for (int i =0; i < n; i++){
cout << -1 << endl;
return 0;
}
}
int sz = ans.size();
for (int i =0; i < n; i++){
cout << ans[i%sz] + kpk * (i /sz) << endl;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIHBpaSBwYWlyIDxpbnQsIGludD4KI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZApjb25zdCBpbnQgTUFYTj0gIDFlNSs1Owpjb25zdCBpbnQgTU9EID0gMWU5Kzc7CmNvbnN0IGludCBiYXNlID0gMjk7CmludCBuLCBseCwgbHksIGtwaywgcHhbTUFYTl0sIHB5W01BWE5dLCBwW01BWE5dOwpzdHJpbmcgeCwgeTsKdmVjdG9yIDxpbnQ+IGFuczsKYm9vbCBzYW1hIChpbnQgaXgsIGludCBpeSwgaW50IGxlbil7CiAgICBpbnQgcHJlZnggPSAocHhbaXgrbGVuXSAtIHB4W2l4XSsgTU9EKSVNT0Q7CiAgICBpbnQgcHJlZnkgPSAocHlbaXkrbGVuXSAtIHB5W2l5XSArIE1PRCApICUgTU9EOwogICAgaWYgKGl4ID4gaXkpewogICAgICAgIHByZWZ5ID0gcHJlZnkqcFtpeC1peV0lTU9EOwogICAgfQogICAgZWxzZSBpZiggaXkgPiBpeCl7CiAgICAgICAgcHJlZnggPSBwcmVmeCpwW2l5LWl4XSVNT0Q7CiAgICAgICAgCiAgICB9CiAgICByZXR1cm4gcHJlZnggPT0gcHJlZnk7Cn0KCnNpZ25lZCBtYWluKCl7CiAgICBpb3NfYmFzZTo6IHN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOyBjb3V0LnRpZShudWxscHRyKTsKICAgIC8vIHViYWggc3RyaW5nIGtlIGFuZ2thIGRlbmdhbiBwYW5na2F0IDI5IChwcmVmaXggc3VtKQogICAgY2luID4+IG4gPj4geCA+PiB5OwogICAgbHggPSB4LnNpemUoKTsKICAgIGx5ID0geS5zaXplKCk7CiAgICBrcGsgPSAobHkqbHgpL19fZ2NkKGx4LGx5KTsKICAgIAogICAgcFswXSA9MTsKICAgIC8vIHgKICAgIGZvciAoaW50IGkgPTA7IGkgPCBseDsgaSsrKXsKICAgICAgICBwW2krMV0gPSBwW2ldKmJhc2UlTU9EOwogICAgICAgIHB4W2krMV0gPSAoKHhbaV0tJ2EnKzEpKnBbaV0rcHhbaV0pICVNT0Q7CiAgICB9CiAgICAvLyB5CiAgICBmb3IgKGludCBpID0wOyBpIDwgbHk7IGkrKyl7CiAgICAgICAgcFtpKzFdID0gcFtpXSpiYXNlJU1PRDsKICAgICAgICBweVtpKzFdID0gKCh5W2ldLSdhJysxKSpwW2ldK3B5W2ldKSAlTU9EOwogICAgfQogICAgLy8gY2FyaSBhbmdrYSBwZXJ0YW1hIHlhbmcgc2FsYWgKICAgIGludCBpID0wOwogICAgd2hpbGUoIGkgPGtwayAmJiBhbnMuc2l6ZSgpIDwgbil7CiAgICAgICAgaW50IGl4ID0gaSAlbHgsIGl5ID0gaSAlbHk7CiAgICAgICAgaW50IGwgPTEsIHIgPSBtaW4obHgtaXgsIGx5LWl5KTsKICAgICAgICBpZiAoc2FtYSAoaXgsIGl5LCByKSl7CiAgICAgICAgICAgIGkrPSByOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgaW50IHJlcyA9IHI7CiAgICAgICAgLy8geWFuZyBwYW5qYW5nIHIgdWRhaCBkaSBjZWsgZGlhdGFzCiAgICAgICAgci0tOwogICAgICAgIHdoaWxlKCBsIDw9IHIpewogICAgICAgICAgICBpbnQgbWlkID0gKGwgK3IpLzI7CiAgICAgICAgICAgIGlmIChzYW1hKGl4LCBpeSwgbWlkKSl7CiAgICAgICAgICAgICAgICBsID0gbWlkICsxOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gY2FyaSB5YW5nIGJlZGEgcGVydGFtYQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICByPSBtaWQgLTE7CiAgICAgICAgICAgICAgICAgcmVzID0gbWlkOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGFucy5wdXNoX2JhY2soaStyZXMtMSk7CiAgICAgICAgaSArPSByZXM7CiAgICB9CiAgICAKICAgIGlmIChhbnMuZW1wdHkoKSl7CiAgICAgICAgZm9yIChpbnQgaSA9MDsgaSA8IG47IGkrKyl7CiAgICAgICAgICAgIGNvdXQgPDwgLTEgPDwgZW5kbDsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgIH0KICAgIGludCBzeiA9IGFucy5zaXplKCk7CiAgICBmb3IgKGludCBpID0wOyBpIDwgbjsgaSsrKXsKICAgICAgICBjb3V0IDw8IGFuc1tpJXN6XSArIGtwayAqIChpIC9zeikgPDwgZW5kbDsKICAgIH0KfQ==