You are given an integer m.

Let M = 2m - 1.

You are also given a set of n integers denoted as the set T. The integers will be provided in base 2 as n binary strings of length m.

A set of integers S is called "good" if the following hold. 

  1. If <image>, then <image>. 
  2. If <image>, then <image>
  3. <image>
  4. All elements of S are less than or equal to M. 



Here, <image> and <image> refer to the bitwise XOR and bitwise AND operators, respectively.

Count the number of good sets S, modulo 109 + 7.

Input

The first line will contain two integers m and n (1 ≤ m ≤ 1 000, 1 ≤ n ≤ min(2m, 50)).

The next n lines will contain the elements of T. Each line will contain exactly m zeros and ones. Elements of T will be distinct.

Output

Print a single integer, the number of good sets modulo 109 + 7. 

Examples

Input

5 3
11010
00101
11000


Output

4


Input

30 2
010101010101010010101010101010
110110110110110011011011011011


Output

860616440

Note

An example of a valid set S is {00000, 00101, 00010, 00111, 11000, 11010, 11101, 11111}.
from collections import defaultdict as di
MOD = int(1e9+7)

bells = di(int)
bells[0,0] = 1
K=1000
for j in range(1,K):
    bells[0,j] = bells[j-1,j-1]
    for i in range(j):
        bells[i+1,j] = (bells[i,j] + bells[i,j-1])%MOD
    
def bellman(n):
    return bells[n-1,n-1]

m,n = [int(x) for x in input().split()]
Tlist = []

for _ in range(n):
    Tlist.append(input())
numbs = []
for i in range(m):
    numb = []
    for j in range(n):
        numb.append(Tlist[j][i])
    numbs.append(int(''.join(numb),2))

eqsize = di(lambda:0)
for numb in numbs:
    eqsize[numb]+=1
sets = []
for numb in eqsize:
    sets.append(eqsize[numb])
parts = 1
for s in sets:
    parts*=bellman(s)
    parts%=MOD
print(parts)
