"use strict";

function Main(input) {
    input = input.split("\n");

    const N = parseInt(input[0], 10);
    const S = input[1].split("");

    let numSubset = 0;

    //組み合わせは２^nある
    const numAllSubset = Math.pow(2, N);
    for (let i = 0; i < numAllSubset; i++) {
        //Nビット分の文字列表現に変換してから処理する方法以外思い浮かばない…
        let binaryExpression = i.toString(2);
        binaryExpression = "0".repeat(N - binaryExpression.length) + binaryExpression;
        binaryExpression.split("");

        //ビットと照らし合わせて１ならその文字を使う
        //ただしすでにその文字が含まれるならこの要素はいらない
        let workStr = "";
        let dispose = false;
        for (let j = 0; j < N; j++) {
            if (binaryExpression[j] === "1") {
                if (workStr.indexOf(S[j]) < 0) {
                    workStr += S[j];
                } else {
                    dispose = true;
                    break;
                }
            }
        }

        if (workStr.length !== 0 && !dispose) {
            numSubset++;
        }
    }

    console.log(numSubset % (Math.pow(10, 9) + 7));
}

Main(require("fs").readFileSync("/dev/stdin", "utf8"));
