#include<iostream>

long int fact(int n); 
  
long int nCr(int n, int r) 
{ 
    return fact(n) / (fact(r) * fact(n - r)); 
} 

long int fact(int n) 
{ 
    long int res = 1; 
    for (int i = 2; i <= n; i++) 
        res = res * i; 
    return res; 
} 

main()
{
	long int n;
	scanf("%ld",&n);
	char s[n];
	int pon[26];
	getchar();
	for(long int i=0;i<n;i++)
	{
		scanf("%c",&s[i]);
		if(i<26)
			pon[i]=0;
	}
	if(n<26)
	{
		printf("0");
		return 0;
	}
	else
	{
		pon[s[0]-65]++;
		long int i=n-1;
		while(s[i]!=90)
		{
			i--;
			if(i==0)
			{
				printf("0");
				return 0;		
			}
		}
		while(i>0)
		{
			pon[s[i]-65]++;
			if(s[i]-s[i-1]>1)
				pon[s[i-1]-65]--;
			i--;
		}
		long long int p=1;
		for(i=0;i<26;i++)
		{
			if(pon[i]<1)
			{
				printf("0");
				return 0;
			}
			if(pon[i]>1)
				p*=nCr(pon[i],pon[i]-1)%1000000007;
		}
		p=p%1000000007;
		printf("%lld",p);
	}
}