#include<bits/stdc++.h>
using namespace std;
const int N=10007;
char a[230][230],b[230][230];
int c[1600],n,m=15,ans,x[230],y[230],dp[230][1600];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)scanf("%c",a[i]+1);
if(n<m){
swap(n,m);
memcpy(b,a,sizeof(b));
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
a[i][j]=b[m-j+1][i];
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]=='1')x[i]+=1<<(m-j);
if(a[i][j]=='0')y[i]+=1<<(m-j);
}
}
for(int i=0;i<(1<<m);i++){
if(((i>>1)&i)==0){
c[++c[0]]=i;
}
}
dp[0][1]=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=c[0];j++){
if((x[i]&c[j])!=x[i])continue;
if((y[i]&(~c[j]))!=y[i])continue;
for(int k=1;k<=c[0];k++){
if((c[j]&c[k])==0){
dp[i][j]=(dp[i][j]+dp[i-1][k])%N;
}
}
}
}
for(int i=1;i<=c[0];i++){
ans=(ans+dp[n][i])%N;
}
cout<<ans;
return 0;
}