Problem:
Score : 200 points

Problem Statement

You are given a string S of length N.
Among its subsequences, count the ones such that all characters are different, modulo 10^9+7. Two subsequences are considered different if their characters come from different positions in the string, even if they are the same as strings.

Here, a subsequence of a string is a concatenation of one or more characters from the string without changing the order.

Constraints

1 \leq N \leq 100000

S consists of lowercase English letters.

|S|=N

Input

Input is given from Standard Input in the following format:

N
S

Output

Print the number of the subsequences such that all characters are different, modulo 10^9+7.

Sample Input 1

4
abcd

Sample Output 1

15

Since all characters in S itself are different, all its subsequences satisfy the condition.

Sample Input 2

3
baa

Sample Output 2

5

The answer is five: b, two occurrences of a, two occurrences of ba. Note that we do not count baa, since it contains two as.

Sample Input 3

5
abcab

Sample Output 3

17

Solution in Python (3.4.3) (judge verdict: Wrong Answer)

def extgcd(a,b): 
    r = [1,0,a] 
    w = [0,1,b] 
    while w[2]!=1: 
        q = r[2]//w[2] 
        r2 = w 
        w2 = [r[0]-q*w[0],r[1]-q*w[1],r[2]-q*w[2]] 
        r = r2 
        w = w2 
        #[x,y] 
        return [w[0],w[1]]

# aの逆元(mod m)を求める。(aとmは互いに素であることが前提)
def mod_inv(a,m):
    x = extgcd(a,m)[0]
    return (m+x%m)%m        

N=int(input())
S=list(input())

ans=0
log=[0]*26
mod=10**9+7
for item in S:
    item=ord(item)-97
    if log[item]==0:
        log[item]+=1
        ans+=ans+1
    else:
        ans+=ans//2+1
        
print(ans)