#include <bits/stdc++.h>
#define ll long long
#define matrix vector<vector<ll>>
#define base 15111992
using namespace std;
string s1, s2, t, s;
int t0,t1,t2,t3,n;
matrix s1s2={{0,1,0,0},{1,1,0,0},{0,1,1,0},{0,0,0,1}};
matrix s2s2={{0,1,0,0},{1,1,0,0},{0,0,1,0},{0,1,0,1}};
matrix d,a;
matrix c;
matrix operator * (const matrix &a, const matrix &b) {
matrix c ={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
for (int k = 0; k < 4; k++) {
c[i][j] = (c[i][j] + (a[i][k] * b[k][j]) % base )% base ;
}
}
}
return c;
}
int sub_(string a, string b) {
string st;
int dem=0;
for (int i=0 ; i<b.length()-a.length()+1 ; i++)
{
st="";
for (int j=i ; j<(i+a.length()); j++)
{
st=st+b[j];
}
if (st==a) dem++;
}
return dem;
}
matrix tinh(matrix a ,ll n) {
if (n == 1) return a;
matrix t = tinh(a,n / 2);
t=t*t;
if (n % 2 == 1) t=t *a;
return t;
}
void prepare()
{
c=s1s2*s2s2;
d={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
a={{sub_(s,s2),sub_(s,s2+s1),sub_(s,s1+s2)-sub_(s, s1)-sub_(s,s2),sub_(s,s2+s2)-2*sub_(s,s2)},
{0,0,0,0},{0,0,0,0},{0,0,0,0}};
n--;
}
void mul()
{
prepare();
if (n==0)
{
cout<<sub_(s,s2+s1)%base<<endl;
return ;
}
if (n==1)
{
a=a*s1s2;
cout<<a[0][1]%base<<endl;
return;
}
if (n%2==0)
{
d=tinh(c,n/2);
}
else
if (n%2==1)
{
n--;
d=tinh(c,n/2)*s1s2;
}
d=a*d;
cout<<d[0][1]%base;
}
int main() {
cin>>n;
cin>>s1;
cin>>s2;
cin>>s;
n=n-2;
string s3;
for (int i=1;i<=30 &&n>0 ;i++)
{
s3=s2+s1;
s1=s2;
s2=s3;
n--;
if (s1.length() >= s.length() || s2.length() >= s.length()) break;
}
if(n==0)cout << sub_(s, s2)<<endl ;
else mul();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbWF0cml4IHZlY3Rvcjx2ZWN0b3I8bGw+PgojZGVmaW5lIGJhc2UgIDE1MTExOTkyCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnN0cmluZyBzMSwgczIsIHQsIHM7CmludCB0MCx0MSx0Mix0MyxuOwptYXRyaXggIHMxczI9e3swLDEsMCwwfSx7MSwxLDAsMH0sezAsMSwxLDB9LHswLDAsMCwxfX07Cm1hdHJpeCAgczJzMj17ezAsMSwwLDB9LHsxLDEsMCwwfSx7MCwwLDEsMH0sezAsMSwwLDF9fTsKbWF0cml4IGQsYTsKbWF0cml4IGM7CgptYXRyaXggb3BlcmF0b3IgKiAoY29uc3QgbWF0cml4ICZhLCBjb25zdCBtYXRyaXggJmIpIHsKICAgIG1hdHJpeCBjID17ezAsMCwwLDB9LHswLDAsMCwwfSx7MCwwLDAsMH0sezAsMCwwLDB9fTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCA0OyBqKyspIHsKICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCA0OyBrKyspIHsKICAgICAgICAgICAgICAgIGNbaV1bal0gPSAoY1tpXVtqXSArIChhW2ldW2tdICogYltrXVtqXSkgICUgYmFzZSApJSBiYXNlIDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBjOwp9CmludCBzdWJfKHN0cmluZyBhLCBzdHJpbmcgYikgewogICAgc3RyaW5nIHN0OwogICAgaW50IGRlbT0wOwogICAgZm9yIChpbnQgaT0wIDsgaTxiLmxlbmd0aCgpLWEubGVuZ3RoKCkrMSA7IGkrKykKICAgIHsKICAgICAgICBzdD0iIjsKICAgICAgICBmb3IgKGludCBqPWkgOyBqPChpK2EubGVuZ3RoKCkpOyBqKyspCiAgICAgICAgewogICAgICAgICAgICBzdD1zdCtiW2pdOwogICAgICAgIH0KICAgICAgICBpZiAoc3Q9PWEpIGRlbSsrOwogICAgfQogICAgcmV0dXJuIGRlbTsKICAgfQptYXRyaXggdGluaChtYXRyaXggYSAsbGwgbikgewogICAgaWYgKG4gPT0gMSkgcmV0dXJuIGE7CiAgICBtYXRyaXggdCA9IHRpbmgoYSxuIC8gMik7CiAgICB0PXQqdDsKICAgIGlmIChuICUgMiA9PSAxKSB0PXQgKmE7CiAgICByZXR1cm4gdDsKfQp2b2lkIHByZXBhcmUoKQp7CiAgICBjPXMxczIqczJzMjsKICAgIGQ9e3swLDAsMCwwfSx7MCwwLDAsMH0sezAsMCwwLDB9LHswLDAsMCwwfX07CiAgICBhPXt7c3ViXyhzLHMyKSxzdWJfKHMsczIrczEpLHN1Yl8ocyxzMStzMiktc3ViXyhzLCBzMSktc3ViXyhzLHMyKSxzdWJfKHMsczIrczIpLTIqc3ViXyhzLHMyKX0sCiAgICB7MCwwLDAsMH0sezAsMCwwLDB9LHswLDAsMCwwfX07CiAgICBuLS07Cn0Kdm9pZCBtdWwoKQp7CiAgICBwcmVwYXJlKCk7CiAgICBpZiAobj09MCkKICAgIHsKICAgICAgICAgY291dDw8c3ViXyhzLHMyK3MxKSViYXNlPDxlbmRsOwogICAgICAgICByZXR1cm4gOwogICAgfQogICAgaWYgKG49PTEpCiAgICB7CiAgICAgICAgYT1hKnMxczI7CiAgICAgICAgY291dDw8YVswXVsxXSViYXNlPDxlbmRsOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChuJTI9PTApCiAgICB7CiAgICAgICAgZD10aW5oKGMsbi8yKTsKICAgIH0KICAgIGVsc2UKICAgIGlmIChuJTI9PTEpCiAgICB7CiAgICAgICAgbi0tOwogICAgICAgIGQ9dGluaChjLG4vMikqczFzMjsKICAgIH0KCiAgICBkPWEqZDsKICAgIGNvdXQ8PGRbMF1bMV0lYmFzZTsKfQppbnQgbWFpbigpIHsKCWNpbj4+bjsKCWNpbj4+czE7CgljaW4+PnMyOwoJY2luPj5zOwogICAgbj1uLTI7CgoJc3RyaW5nIHMzOwoJZm9yIChpbnQgaT0xO2k8PTMwICYmbj4wIDtpKyspCiAgICB7CiAgICAgICAgczM9czIrczE7CiAgICAgICAgczE9czI7CiAgICAgICAgczI9czM7CiAgICAgICAgbi0tOwogICAgICAgIGlmIChzMS5sZW5ndGgoKSA+PSBzLmxlbmd0aCgpIHx8IHMyLmxlbmd0aCgpID49IHMubGVuZ3RoKCkpIGJyZWFrOwogICAgfQogICAgaWYobj09MCljb3V0IDw8IHN1Yl8ocywgczIpPDxlbmRsIDsKICAgIGVsc2UgbXVsKCk7CiAgICByZXR1cm4gMDsKfQoKCgo=