#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define fori(i, a, b) for (int i = a; i < b; ++i)
const int MD = 15111992;
struct matrix4 {
int a[4][4];
matrix4() {
fori(i, 0, 4) fori(j, 0, 4) a[i][j] = 0;
}
matrix4 operator * (matrix4 b) {
matrix4 c;
fori(i, 0, 4) fori(j, 0, 4) c.a[i][j] = 0;
fori(i, 0, 4) fori(j, 0, 4) fori(t, 0, 4)
c.a[i][j] = (c.a[i][j] + (ll)a[i][t] * b.a[t][j] % MD) % MD;
return c;
}
};
int n;
string s, s1, s2, tmp;
matrix4 ans, dv, dva, dvb, x;
matrix4 multiPower(matrix4 a, int n) {
if (n == 0) return x;
matrix4 g = multiPower(a, n / 2);
g = g * g;
if (n % 2) return a * g; return g;
}
void enter() {
cin >> n >> s1 >> s2 >> s;
n -= 2;
while (n && (s1.size() < s.size() || s2.size() < s.size())) {
--n;
tmp = s2 + s1; s1 = s2; s2 = tmp;
}
}
int compare(string a, string b, int d) {
fori(i, 0, a.size())
if (b[d++] != a[i]) return 0;
return 1;
}
void built() {
x.a[0][0] = x.a[1][1] = x.a[2][2] = x.a[3][3] = 1;
dva.a[0][1] = dva.a[1][0] = dva.a[1][1] = dva.a[1][2] = dva.a[2][2] = dva.a[3][3] = 1;
dvb.a[0][1] = dvb.a[1][0] = dvb.a[1][1] = dvb.a[1][3] = dvb.a[2][2] = dvb.a[3][3] = 1;
if (s1.size() >= s.size())
fori(i, 0, s1.size() - s.size() + 1) ans.a[0][0] += compare(s, s1, i);
if (s2.size() >= s.size())
fori(i, 0, s2.size() - s.size() + 1) ans.a[1][0] += compare(s, s2, i);
if (!n) return;
tmp = s2 + s1;
int cnt = 0;
if (s2.size() >= s.size())
fori(i, s2.size() - s.size() + 1, s2.size()) cnt += compare(s, tmp, i);
cnt += (ans.a[0][0] + ans.a[1][0]);
ans.a[0][0] = ans.a[1][0];
ans.a[1][0] = cnt;
--n;
tmp = s1 + s2;
if (s1.size() >= s.size())
fori(i, s1.size() - s.size() + 1, s1.size()) ans.a[2][0] += compare(s, tmp, i);
tmp = s2 + s2;
if (s2.size() >= s.size())
fori(i, s2.size() - s.size() + 1, s2.size()) ans.a[3][0] += compare(s, tmp, i);
}
void solve() {
if (!n) return;
if (n % 2) {
dv = dva * dvb;
ans = dva * ans;
}
else
dv = dvb * dva;
ans = multiPower(dv, n / 2) * ans;
}
int main() {
enter();
built();
solve();
return !(cout << ans.a[1][0]);
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nIAojZGVmaW5lIGZvcmkoaSwgYSwgYikgZm9yIChpbnQgaSA9IGE7IGkgPCBiOyArK2kpCgpjb25zdCBpbnQgTUQgPSAxNTExMTk5MjsKCnN0cnVjdCBtYXRyaXg0IHsgCglpbnQgYVs0XVs0XTsKCW1hdHJpeDQoKSB7CgkJZm9yaShpLCAwLCA0KSBmb3JpKGosIDAsIDQpIGFbaV1bal0gPSAwOwoJfQoJbWF0cml4NCBvcGVyYXRvciAqIChtYXRyaXg0IGIpIHsKCQltYXRyaXg0IGM7CgkJZm9yaShpLCAwLCA0KSBmb3JpKGosIDAsIDQpIGMuYVtpXVtqXSA9IDA7CgkJZm9yaShpLCAwLCA0KSBmb3JpKGosIDAsIDQpIGZvcmkodCwgMCwgNCkKCQkJYy5hW2ldW2pdID0gKGMuYVtpXVtqXSArIChsbClhW2ldW3RdICogYi5hW3RdW2pdICUgTUQpICUgTUQ7CgkJcmV0dXJuIGM7Cgl9Cn07CgppbnQgbjsKc3RyaW5nIHMsIHMxLCBzMiwgdG1wOwptYXRyaXg0IGFucywgZHYsIGR2YSwgZHZiLCB4OwoKbWF0cml4NCBtdWx0aVBvd2VyKG1hdHJpeDQgYSwgaW50IG4pIHsKCWlmIChuID09IDApIHJldHVybiB4OwoJbWF0cml4NCBnID0gbXVsdGlQb3dlcihhLCBuIC8gMik7CglnID0gZyAqIGc7CglpZiAobiAlIDIpIHJldHVybiBhICogZzsgcmV0dXJuIGc7IAp9Cgp2b2lkIGVudGVyKCkgewoJY2luID4+IG4gPj4gczEgPj4gczIgPj4gczsKCW4gLT0gMjsKCXdoaWxlIChuICYmIChzMS5zaXplKCkgPCBzLnNpemUoKSB8fCBzMi5zaXplKCkgPCBzLnNpemUoKSkpIHsKCQktLW47CgkJdG1wID0gczIgKyBzMTsgczEgPSBzMjsgczIgPSB0bXA7Cgl9Cn0KCmludCBjb21wYXJlKHN0cmluZyBhLCBzdHJpbmcgYiwgaW50IGQpIHsKCWZvcmkoaSwgMCwgYS5zaXplKCkpIAoJCWlmIChiW2QrK10gIT0gYVtpXSkgcmV0dXJuIDA7CglyZXR1cm4gMTsKfQoKdm9pZCBidWlsdCgpIHsKCXguYVswXVswXSA9IHguYVsxXVsxXSA9IHguYVsyXVsyXSA9IHguYVszXVszXSA9IDE7CglkdmEuYVswXVsxXSA9IGR2YS5hWzFdWzBdID0gZHZhLmFbMV1bMV0gPSBkdmEuYVsxXVsyXSA9IGR2YS5hWzJdWzJdID0gZHZhLmFbM11bM10gPSAxOwoJZHZiLmFbMF1bMV0gPSBkdmIuYVsxXVswXSA9IGR2Yi5hWzFdWzFdID0gZHZiLmFbMV1bM10gPSBkdmIuYVsyXVsyXSA9IGR2Yi5hWzNdWzNdID0gMTsKCWlmIChzMS5zaXplKCkgPj0gcy5zaXplKCkpCgkJZm9yaShpLCAwLCBzMS5zaXplKCkgLSBzLnNpemUoKSArIDEpIGFucy5hWzBdWzBdICs9IGNvbXBhcmUocywgczEsIGkpOwoJaWYgKHMyLnNpemUoKSA+PSBzLnNpemUoKSkKCQlmb3JpKGksIDAsIHMyLnNpemUoKSAtIHMuc2l6ZSgpICsgMSkgYW5zLmFbMV1bMF0gKz0gY29tcGFyZShzLCBzMiwgaSk7IAoJaWYgKCFuKSByZXR1cm47Cgl0bXAgPSBzMiArIHMxOwoJaW50IGNudCA9IDA7CglpZiAoczIuc2l6ZSgpID49IHMuc2l6ZSgpKQoJCWZvcmkoaSwgczIuc2l6ZSgpIC0gcy5zaXplKCkgKyAxLCBzMi5zaXplKCkpIGNudCArPSBjb21wYXJlKHMsIHRtcCwgaSk7CgljbnQgKz0gKGFucy5hWzBdWzBdICsgYW5zLmFbMV1bMF0pOyAKCWFucy5hWzBdWzBdID0gYW5zLmFbMV1bMF07IAoJYW5zLmFbMV1bMF0gPSBjbnQ7IAoJLS1uOyAKCXRtcCA9IHMxICsgczI7IAoJaWYgKHMxLnNpemUoKSA+PSBzLnNpemUoKSkKCQlmb3JpKGksIHMxLnNpemUoKSAtIHMuc2l6ZSgpICsgMSwgczEuc2l6ZSgpKSBhbnMuYVsyXVswXSArPSBjb21wYXJlKHMsIHRtcCwgaSk7IAoJdG1wID0gczIgKyBzMjsKCWlmIChzMi5zaXplKCkgPj0gcy5zaXplKCkpCglmb3JpKGksIHMyLnNpemUoKSAtIHMuc2l6ZSgpICsgMSwgczIuc2l6ZSgpKSBhbnMuYVszXVswXSArPSBjb21wYXJlKHMsIHRtcCwgaSk7Cn0KCnZvaWQgc29sdmUoKSB7IAoJaWYgKCFuKSByZXR1cm47IAoJaWYgKG4gJSAyKSB7CgkJZHYgPSBkdmEgKiBkdmI7CgkJYW5zID0gZHZhICogYW5zOwoJfQoJZWxzZSAKCQlkdiA9IGR2YiAqIGR2YTsKCWFucyA9IG11bHRpUG93ZXIoZHYsIG4gLyAyKSAqIGFuczsgCn0KCmludCBtYWluKCkgewoJZW50ZXIoKTsKCWJ1aWx0KCk7Cglzb2x2ZSgpOwoJcmV0dXJuICEoY291dCA8PCBhbnMuYVsxXVswXSk7Cn0=