output_description: Print the number of the subsequences such that all characters are different,
  modulo 10^9+7.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      S
attempt: n = int(input())
  
  M = pow(10, 9) + 7
  import sys
  
  dc = {}
  al = [0]
  
  rr = [1]
  
  
  def search(ss, start, end):
      z = al[(start + end) // 2]
      nz = al[(start + end) // 2 + 1]
      if z <= ss and ss < nz:
          return (start + end) // 2
      elif ss < z:
          return search(ss, start, (start + end) // 2)
      else:
          return search(ss, (start + end) // 2 + 1, end)
  
  
  c = 0
  cn = 0
  for line in sys.stdin:
      a = int(line)
      if a in dc:
          ss = dc[a]
          if ss != c - 1:
              if ss >= al[cn]:
                  rr.append((rr[cn] * 2) % M)
              else:
                  i = search(ss, 0, cn)
                  rr.append((rr[cn] + rr[i]) % M)
              al.append(c)
              cn += 1
      dc[a] = c
      c += 1
  print(rr[cn] % M)
  
problem_description: 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.
samples: [{"input": "4\n    abcd", "output": "15\n    \n\nSince all characters in S itself are different, all its subsequences satisfy\nthe condition.\n\n* * *"}, {"input": "3\n    baa", "output": "5\n    \n\nThe answer is five: `b`, two occurrences of `a`, two occurrences of `ba`. Note\nthat we do not count `baa`, since it contains two `a`s.\n\n* * *"}, {"input": "5\n    abcab", "output": "17"}]