rt,红与紫
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=3e3,mod=1e9+7;
int n,a[N],inv[N];
long long C(int a,int b)
{
return (1ll*inv[a]/(1ll*inv[b]*inv[a-b]))%mod;}
signed main()
{
scanf("%d",&n);
string k;cin>>k;
for (int i=1;i<=n;i++) a[k[i-1]-'a'+1]+=1;
inv[0]=1;
for (int i=1;i<=N;i++) inv[i]=(inv[i-1]*i)%mod;
long long sum=inv[n];
int NV=-1,NV_fl=0;
for (int i=1;i<=n;i++) if (a[i]%2==1) NV=i,NV_fl++;
if (NV_fl>1 || NV_fl==1 && n%2==0){cout<<sum<<endl;return 0;}
if (NV!=-1) a[NV]--,n--;
long long ans=1;
n/=2;
for (int i=1;i<=30;i++)
{
a[i]/=2;
if (a[i]==0) continue;
int u=C(n,a[i]);
if (i==NV) ans*=1ll*u*inv[a[i]*2+1]%mod,ans%=mod,n-=a[i];
else ans*=1ll*u*inv[a[i]*2]%mod;ans%=mod;n-=a[i];
if (NV_fl) ans=(1ll*ans*(a[NV]+1))%mod;ans%=mod;
}
cout<<sum-ans<<endl;
return 0;
}