using System;
using System.Collections.Generic;

namespace Kvalifikacije2TreciZad
{
	class Program
	{
		static int Index(char c)
		{
			return c - 'A';
		}
		static int sabiranjePoModulu(int x, int y)
		{
			return (x + y) % (1000000007);
		}
		static int brojKombinacija(int index, char slSlovo, List<int[]>[] indeksi)
		{
			int brKombinacija = 0;
			foreach (int[] par in indeksi[Index(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)
		{
			List<int[]>[] pojavljivanja = new List<int[]>[26];
			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[Index(str[u])] == null)
				{
					pojavljivanja[Index(str[u])] = new List<int[]>();
				}
				pojavljivanja[Index(str[u])].Add(new int[2] { u, o });
				u = o;
			}
			for (int i = 0; i < 26; i++)
			{
				if (pojavljivanja[i] == null)
				{
					Console.WriteLine("0");
					return;
				}
			}
			int br = brojKombinacija(0, 'A', pojavljivanja);
			Console.WriteLine(br);
		}
	}
}