#include <bits/stdc++.h>
using std::vector;
#define ge getchar()
#define pu(c) putchar(c)
#define void inline void
#define ll unsigned long long
class A{public:
inline ll read(){register ll s=0;register char c=ge,f=1;while(c<48||c>58)
(c=='-'?f=-1:0),c=ge;while(c<59&&c>47)s=s*10+c-48,c=ge;return s*f;}
void write(register int x){if(!x){pu(48);return;}if(x<0)pu('-'),x=-x;
static char c[20],s=0;while(x)c[++s]=x%10+48,x/=10;while(s)pu(c[s--]);}
void write(const char c[]){for(int i=0;i<strlen(c);++i)pu(c[i]);}
void write(register char c){pu(c);}}cin,cout;
inline A &operator>>(A &cin,register auto &a){a=cin.read();return cin;}
inline A &operator<<(A &cout,register auto a){cout.write(a);return cout;}
const unsigned short b[1597]={
0,1,2,4,5,8,9,10,16,17,18,20,21,32,33,34,36,37,40,41,42,64,65,66,68,69,72,73,74,80,81,82,84,85,128,129,130,132,133,136,137,138,144,145,146,148,149,160,161,162,164,165,168,169,170,256,257,258,260,261,264,265,266,272,
273,274,276,277,288,289,290,292,293,296,297,298,320,321,322,324,325,328,329,330,336,337,338,340,341,512,513,514,516,517,520,521,522,528,529,530,532,533,544,545,546,548,549,552,553,554,576,577,578,580,581,584,585,586,592,593,594,596,597,640,641,642,644,645,
648,649,650,656,657,658,660,661,672,673,674,676,677,680,681,682,1024,1025,1026,1028,1029,1032,1033,1034,1040,1041,1042,1044,1045,1056,1057,1058,1060,1061,1064,1065,1066,1088,1089,1090,1092,1093,1096,1097,1098,1104,1105,1106,1108,1109,1152,1153,1154,1156,1157,1160,1161,1162,1168,1169,1170,1172,1173,1184,
1185,1186,1188,1189,1192,1193,1194,1280,1281,1282,1284,1285,1288,1289,1290,1296,1297,1298,1300,1301,1312,1313,1314,1316,1317,1320,1321,1322,1344,1345,1346,1348,1349,1352,1353,1354,1360,1361,1362,1364,1365,2048,2049,2050,2052,2053,2056,2057,2058,2064,2065,2066,2068,2069,2080,2081,2082,2084,2085,2088,2089,2090,2112,2113,
2114,2116,2117,2120,2121,2122,2128,2129,2130,2132,2133,2176,2177,2178,2180,2181,2184,2185,2186,2192,2193,2194,2196,2197,2208,2209,2210,2212,2213,2216,2217,2218,2304,2305,2306,2308,2309,2312,2313,2314,2320,2321,2322,2324,2325,2336,2337,2338,2340,2341,2344,2345,2346,2368,2369,2370,2372,2373,2376,2377,2378,2384,2385,2386,
2388,2389,2560,2561,2562,2564,2565,2568,2569,2570,2576,2577,2578,2580,2581,2592,2593,2594,2596,2597,2600,2601,2602,2624,2625,2626,2628,2629,2632,2633,2634,2640,2641,2642,2644,2645,2688,2689,2690,2692,2693,2696,2697,2698,2704,2705,2706,2708,2709,2720,2721,2722,2724,2725,2728,2729,2730,4096,4097,4098,4100,4101,4104,4105,
4106,4112,4113,4114,4116,4117,4128,4129,4130,4132,4133,4136,4137,4138,4160,4161,4162,4164,4165,4168,4169,4170,4176,4177,4178,4180,4181,4224,4225,4226,4228,4229,4232,4233,4234,4240,4241,4242,4244,4245,4256,4257,4258,4260,4261,4264,4265,4266,4352,4353,4354,4356,4357,4360,4361,4362,4368,4369,4370,4372,4373,4384,4385,4386,
4388,4389,4392,4393,4394,4416,4417,4418,4420,4421,4424,4425,4426,4432,4433,4434,4436,4437,4608,4609,4610,4612,4613,4616,4617,4618,4624,4625,4626,4628,4629,4640,4641,4642,4644,4645,4648,4649,4650,4672,4673,4674,4676,4677,4680,4681,4682,4688,4689,4690,4692,4693,4736,4737,4738,4740,4741,4744,4745,4746,4752,4753,4754,4756,
4757,4768,4769,4770,4772,4773,4776,4777,4778,5120,5121,5122,5124,5125,5128,5129,5130,5136,5137,5138,5140,5141,5152,5153,5154,5156,5157,5160,5161,5162,5184,5185,5186,5188,5189,5192,5193,5194,5200,5201,5202,5204,5205,5248,5249,5250,5252,5253,5256,5257,5258,5264,5265,5266,5268,5269,5280,5281,5282,5284,5285,5288,5289,5290,
5376,5377,5378,5380,5381,5384,5385,5386,5392,5393,5394,5396,5397,5408,5409,5410,5412,5413,5416,5417,5418,5440,5441,5442,5444,5445,5448,5449,5450,5456,5457,5458,5460,5461,8192,8193,8194,8196,8197,8200,8201,8202,8208,8209,8210,8212,8213,8224,8225,8226,8228,8229,8232,8233,8234,8256,8257,8258,8260,8261,8264,8265,8266,8272,
8273,8274,8276,8277,8320,8321,8322,8324,8325,8328,8329,8330,8336,8337,8338,8340,8341,8352,8353,8354,8356,8357,8360,8361,8362,8448,8449,8450,8452,8453,8456,8457,8458,8464,8465,8466,8468,8469,8480,8481,8482,8484,8485,8488,8489,8490,8512,8513,8514,8516,8517,8520,8521,8522,8528,8529,8530,8532,8533,8704,8705,8706,8708,8709,
8712,8713,8714,8720,8721,8722,8724,8725,8736,8737,8738,8740,8741,8744,8745,8746,8768,8769,8770,8772,8773,8776,8777,8778,8784,8785,8786,8788,8789,8832,8833,8834,8836,8837,8840,8841,8842,8848,8849,8850,8852,8853,8864,8865,8866,8868,8869,8872,8873,8874,9216,9217,9218,9220,9221,9224,9225,9226,9232,9233,9234,9236,9237,9248,
9249,9250,9252,9253,9256,9257,9258,9280,9281,9282,9284,9285,9288,9289,9290,9296,9297,9298,9300,9301,9344,9345,9346,9348,9349,9352,9353,9354,9360,9361,9362,9364,9365,9376,9377,9378,9380,9381,9384,9385,9386,9472,9473,9474,9476,9477,9480,9481,9482,9488,9489,9490,9492,9493,9504,9505,9506,9508,9509,9512,9513,9514,9536,9537,
9538,9540,9541,9544,9545,9546,9552,9553,9554,9556,9557,10240,10241,10242,10244,10245,10248,10249,10250,10256,10257,10258,10260,10261,10272,10273,10274,10276,10277,10280,10281,10282,10304,10305,10306,10308,10309,10312,10313,10314,10320,10321,10322,10324,10325,10368,10369,10370,10372,10373,10376,10377,10378,10384,10385,10386,10388,10389,10400,10401,10402,10404,10405,10408,
10409,10410,10496,10497,10498,10500,10501,10504,10505,10506,10512,10513,10514,10516,10517,10528,10529,10530,10532,10533,10536,10537,10538,10560,10561,10562,10564,10565,10568,10569,10570,10576,10577,10578,10580,10581,10752,10753,10754,10756,10757,10760,10761,10762,10768,10769,10770,10772,10773,10784,10785,10786,10788,10789,10792,10793,10794,10816,10817,10818,10820,10821,10824,10825,
10826,10832,10833,10834,10836,10837,10880,10881,10882,10884,10885,10888,10889,10890,10896,10897,10898,10900,10901,10912,10913,10914,10916,10917,10920,10921,10922,16384,16385,16386,16388,16389,16392,16393,16394,16400,16401,16402,16404,16405,16416,16417,16418,16420,16421,16424,16425,16426,16448,16449,16450,16452,16453,16456,16457,16458,16464,16465,16466,16468,16469,16512,16513,16514,
16516,16517,16520,16521,16522,16528,16529,16530,16532,16533,16544,16545,16546,16548,16549,16552,16553,16554,16640,16641,16642,16644,16645,16648,16649,16650,16656,16657,16658,16660,16661,16672,16673,16674,16676,16677,16680,16681,16682,16704,16705,16706,16708,16709,16712,16713,16714,16720,16721,16722,16724,16725,16896,16897,16898,16900,16901,16904,16905,16906,16912,16913,16914,16916,
16917,16928,16929,16930,16932,16933,16936,16937,16938,16960,16961,16962,16964,16965,16968,16969,16970,16976,16977,16978,16980,16981,17024,17025,17026,17028,17029,17032,17033,17034,17040,17041,17042,17044,17045,17056,17057,17058,17060,17061,17064,17065,17066,17408,17409,17410,17412,17413,17416,17417,17418,17424,17425,17426,17428,17429,17440,17441,17442,17444,17445,17448,17449,17450,
17472,17473,17474,17476,17477,17480,17481,17482,17488,17489,17490,17492,17493,17536,17537,17538,17540,17541,17544,17545,17546,17552,17553,17554,17556,17557,17568,17569,17570,17572,17573,17576,17577,17578,17664,17665,17666,17668,17669,17672,17673,17674,17680,17681,17682,17684,17685,17696,17697,17698,17700,17701,17704,17705,17706,17728,17729,17730,17732,17733,17736,17737,17738,17744,
17745,17746,17748,17749,18432,18433,18434,18436,18437,18440,18441,18442,18448,18449,18450,18452,18453,18464,18465,18466,18468,18469,18472,18473,18474,18496,18497,18498,18500,18501,18504,18505,18506,18512,18513,18514,18516,18517,18560,18561,18562,18564,18565,18568,18569,18570,18576,18577,18578,18580,18581,18592,18593,18594,18596,18597,18600,18601,18602,18688,18689,18690,18692,18693,
18696,18697,18698,18704,18705,18706,18708,18709,18720,18721,18722,18724,18725,18728,18729,18730,18752,18753,18754,18756,18757,18760,18761,18762,18768,18769,18770,18772,18773,18944,18945,18946,18948,18949,18952,18953,18954,18960,18961,18962,18964,18965,18976,18977,18978,18980,18981,18984,18985,18986,19008,19009,19010,19012,19013,19016,19017,19018,19024,19025,19026,19028,19029,19072,
19073,19074,19076,19077,19080,19081,19082,19088,19089,19090,19092,19093,19104,19105,19106,19108,19109,19112,19113,19114,20480,20481,20482,20484,20485,20488,20489,20490,20496,20497,20498,20500,20501,20512,20513,20514,20516,20517,20520,20521,20522,20544,20545,20546,20548,20549,20552,20553,20554,20560,20561,20562,20564,20565,20608,20609,20610,20612,20613,20616,20617,20618,20624,20625,
20626,20628,20629,20640,20641,20642,20644,20645,20648,20649,20650,20736,20737,20738,20740,20741,20744,20745,20746,20752,20753,20754,20756,20757,20768,20769,20770,20772,20773,20776,20777,20778,20800,20801,20802,20804,20805,20808,20809,20810,20816,20817,20818,20820,20821,20992,20993,20994,20996,20997,21000,21001,21002,21008,21009,21010,21012,21013,21024,21025,21026,21028,21029,21032,
21033,21034,21056,21057,21058,21060,21061,21064,21065,21066,21072,21073,21074,21076,21077,21120,21121,21122,21124,21125,21128,21129,21130,21136,21137,21138,21140,21141,21152,21153,21154,21156,21157,21160,21161,21162,21504,21505,21506,21508,21509,21512,21513,21514,21520,21521,21522,21524,21525,21536,21537,21538,21540,21541,21544,21545,21546,21568,21569,21570,21572,21573,21576,21577,
21578,21584,21585,21586,21588,21589,21632,21633,21634,21636,21637,21640,21641,21642,21648,21649,21650,21652,21653,21664,21665,21666,21668,21669,21672,21673,21674,21760,21761,21762,21764,21765,21768,21769,21770,21776,21777,21778,21780,21781,21792,21793,21794,21796,21797,21800,21801,21802,21824,21825,21826,21828,21829,21832,21833,21834,21840,21841,21842,21844,21845
},cnt=1597,p=10007;
int dp[226][1<<15]={1},n,m,ans;char c[226][226],a[226][16],s[225],t[225];
signed main(){cin>>n>>m;for(int i=1;i<=n;++i)scanf("%s",c[i]+1);
if(m>n)for(int i=1;i<=n;++i)for(int j=1;j<=m;++j)a[i][j]=c[j][i];
else for(int i=1;i<=n;++i)for(int j=1;j<=m;++j)a[i][j]=c[i][j];
if(m>n){unsigned short t=n;n=m;m=t;}for(unsigned short i=n;i;--i)
for(unsigned short j=m;j;--j)a[i][j]=a[i][j]=='.'?2:a[i][j]^48;
for(int i=1;i<=n;++i)for(int j=1;j<=m;++j)
(a[i][j]==1?s[i]+=1<<m-j:0),(a[i][j]==0?t[i]+=1<<m-j:0);
for(int i=1;i<=n;++i)for(int j=0;j<cnt&&b[j]<(1<<m);++j){
if((s[i]&b[j])!=s[i]||(t[i]&(~b[j]))!=t[i])continue;
for(int k=0;k<cnt&&b[k]<(1<<m);++k)if(!(b[j]&b[k]))
dp[i][j]=(dp[i-1][k]+dp[i][j])%p;}
for(int i=0;i<cnt&&b[i]<(1<<m);++i)ans=(ans+dp[n][i])%p;cout<<ans;}
#include <bits/stdc++.h>
using namespace std;
const unsigned short p=10007;
int dp[226][1<<15]={1},b[1597],cnt,n,m,ans;
char c[226][226],a[226][16],s[225],t[225];
signed main(){cin>>n>>m;
for(int i=1;i<=n;++i)scanf("%s",c[i]+1);
for(int i=0;i<(1<<15);++i)
if(!((i&(i<<1))||(i&(i>>1))))b[cnt++]=i;
if(m>n)for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)a[i][j]=c[j][i];
else for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)a[i][j]=c[i][j];
if(m>n){unsigned short t=n;n=m;m=t;}
for(unsigned short i=n;i;--i)
for(unsigned short j=m;j;--j)
a[i][j]=a[i][j]=='.'?2:a[i][j]^48;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
(a[i][j]==1?s[i]+=1<<(m-j):0),
(a[i][j]==0?t[i]+=1<<(m-j):0);
for(int i=1;i<=n;++i)
for(int j=0;j<cnt&&b[j]<(1<<m);++j){
if((s[i]&b[j])!=s[i]||(t[i]&(~b[j]))!=t[i])continue;
for(int k=0;(k<cnt)&&(b[k]<(1<<m));++k)
if(!(b[j]&b[k]))
dp[i][j]=(dp[i-1][k]+dp[i][j])%p;}
for(int i=0;i<cnt&&b[i]<(1<<m);++i)
ans=(ans+dp[n][i])%p;
cout<<ans;}
**###### **Nothing is compiled: OUTPUT exceeds.