#include <bits/stdc++.h>
#include <regex>

using namespace std;

long long br=0;

int main()
{
    int n;
    cin>>n;
    string s;
    cin>>s;
    int poz1,poz2;

    if (n<26)
    {
        cout<<"0";
        return 0;
    }

    if (n==26)
    {
        if (s=="ABCDEFGHIJKLMNOPQRSTUVWXYZ")
        {
            cout<<"1";
        }
        else
        {
            cout<<"0";
        }
        return 0;
    }

    if (n==27)
    {
        char p,d;
        int brojac=0;
        for (int i=0;i<27;i++)
        {
            p=s[i];
            for (int j=i+1;j<27;j++)
            {
                d=s[j];
                if (p==d)
                {
                    poz1=j;
                    poz2=i;
                    break;
                }
            }
        }
        string s1;
        s1=s;
        s1.erase(poz1,1);
        if (s1=="ABCDEFGHIJKLMNOPQRSTUVWXYZ")
        {
            cout<<"1";
            return 0;
        }
        s1=s;
        s1.erase (poz2,1);
        if (s1=="ABCDEFGHIJKLMNOPQRSTUVWXYZ")
        {
            cout<<"1";
            return 0;
        }
        cout<<"0";
        return 0;
    }

    int poz=s.find ('A');
    if (poz!=string::npos)
    {
        s.erase(0,poz);
    }
    else
    {
        cout<<"0";
        return 0;
    }
    //kada izbrisemo sve do prvog  A  ako je duzina ostatka manja od 26 tada sigurno nece moci da ostane ABCD...Z
 
    if (s.size()<=26)
    {
        if (s=="ABCDEFGHIJKLMNOPQRSTUVWXYZ")
        {
            cout<<"1";
        }
        else
        {
            cout<<"0";
        }
        return 0;
    }


    poz=s.find_last_of("Z");
    if (poz!=string::npos)
    {
        s.erase (poz+1, (n-poz));
    }
    else
    {
        cout<<"0";
        return 0;
    }
    //kada izbrisemo sve od poslednjeg ponavljanja Z ako je duzina ostatka manja od 26 tada sigurno nece moci da ostane ABCD...Z
    if (s.size()<=26)
    {
        if (s=="ABCDEFGHIJKLMNOPQRSTUVWXYZ")
        {
            cout<<"1";
        }
        else
        {
            cout<<"0";
        }
        return 0;
    }

    int ponavljanja [26];
    for (int i=0;i<26;i++)
    {
        ponavljanja[i]=0;
    }
    int k;
    char c;
    for (int i=0;i<s.size();i++)
    {
        c=s[i];
        k=c-'A';
        ponavljanja[k]++;
    }
    for (int i=0;i<26;i++)
    {
        if (ponavljanja[i]==0)
        {
            cout<<"0";
            return 0;
        }
    }

    string ostatak;
    string formula= "[^A]*[A][^B]*[B][^C]*[C][^D]*[D][^E]*[E][^F]*[F][^G]*[G][^H]*[H][^I]*[I][^J]*[J][^K]*[K][^L]*[L][^M]*[M][^N]*[N][^O]*[O][^P]*[P][^Q]*[Q][^R]*[R][^S]*[S][^T]*[T][^U]*[U][^V]*[V][^W]*[W][^X]*[X][^Y]*[Y][^Z]*[Z]";
    
    for (int i=0;i<25;i++)
    {
        c=i+'A';
        poz=s.find_last_of(c);
        regex reg(formula);
        while (poz!=string::npos)
        {
            ostatak=s.substr(poz,s.size()-poz);
            if (regex_match(ostatak,reg)==false)
            {
                break;
            }
            else            
            {    
                s.erase(poz,1);
            }
            poz=s.find_last_of(c);
 
        }
        formula.erase(0,8);
    }
    
    if (s.size()<26)
    {
        cout<<"0";
        return 0;
    }
    
    for (int i=0;i<26;i++)
    {
        ponavljanja[i]=0;
    }
    for (int i=0;i<s.size();i++)
    {
        c=s[i];
        k=c-'A';
        ponavljanja[k]++;
    }
    long long rezultat=1;
    long long dek=1000000007;
    for (int i=0;i<26;i++)
    {
        rezultat=rezultat*ponavljanja[i];
        if (rezultat>dek)
        {
            rezultat=rezultat%dek;
        }
    }
    cout<<rezultat;
}