#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define fo(i,a,b) for(i=a;i<=b;i++)
#define fod(i,a,b) for(i=a;i>=b;i--)
using namespace std;
const int maxn=10007,mo=1e9+7;
typedef long long ll;
int i,j,k,l,t,n,m;
char s[maxn];
int a[maxn],b[maxn],p[maxn];
bool az;
ll ans,f[maxn][107],c[maxn][27];
int main(){
// freopen("fan.in","r",stdin);
freopen("helloworld.in","r",stdin);
freopen("helloworld.out","w",stdout);
while(scanf("%d",&n)!=EOF){
scanf("%s",s+1);
m=strlen(s+1);az=0;
fo(i,1,m)a[i]=s[i]-'a';
fo(i,1,m)if(s[i]>'z'||s[i]<'a')az=1;
memset(p,0,sizeof(p));
j=0;ans=0;
fo(i,2,m){
if(j&&s[j+1]!=s[i])j=p[j];
if(s[j+1]==s[i])j++;
p[i]=j;
}
fo(i,0,m-1){
fo(j,0,25){
k=i;
while(k&&a[k+1]!=j)k=p[k];
if(a[k+1]==j)k++;
c[i][j]=k;
}
}
memset(f,0,sizeof(f));f[0][0]=1;
fo(i,0,n-1){
fo(j,0,m-1){
fo(k,0,25){
f[i+1][c[j][k]]=(f[i+1][c[j][k]]+f[i][j])%mo;
}
}
}
fo(i,0,m-1)ans=(ans+f[n][i])%mo;
printf("%lld\n",ans);
}
}