using System;
using System.Collections.Generic;

namespace Kvalifikacije2TreciZad
{
	class Program
	{
		static int sabiranjePoModulu(int x, int y)
		{
			return (x + y) % (1000000007);
		}
		static int brojKombinacija(int index, char slSlovo, Dictionary<char, List<int[]>> indeksi)
		{
			int brKombinacija = 0;
			foreach (int[] par in indeksi[slSlovo])
			{
				if(par[0] >= index)
				{
					if (slSlovo == 'Z')
					{
						brKombinacija = sabiranjePoModulu(brKombinacija, par[1] - par[0]);
					}
					else
					{
						brKombinacija = sabiranjePoModulu(brKombinacija, (par[1] - par[0]) * brojKombinacija(par[1], (char)((int)slSlovo + 1), indeksi)) ;
					}
				}
			}
			return brKombinacija;
		}
		static void Main(string[] args)
		{
			Dictionary<char, List<int[]>> pojavljivanja = new Dictionary<char, List<int[]>>();
			int length = int.Parse(Console.ReadLine());
			string str = Console.ReadLine();
			int u = 0;
			while(u < length)
			{
				int o = u + 1;
				while (o < length && str[u] == str[o] )
				{
					o++;
				}
				if (!pojavljivanja.ContainsKey(str[u]))
				{
					pojavljivanja.Add(str[u], new List<int[]>());
				}
				pojavljivanja[str[u]].Add(new int[2] { u, o });
				u = o;
			}
			if(pojavljivanja.Count < 26)
			{
				Console.WriteLine(0);
			}
			else
			{
				Console.WriteLine(brojKombinacija(0, 'A', pojavljivanja));
			}
			
		}
	}
}