#include <bits/stdc++.h>
using namespace std;
int wys, sze;
bool secik[500000];
int tab[500000];
int main() {
  scanf("%d%d", &wys, &sze);
  memset(secik, 0, sizeof secik);
  memset(tab, -1, sizeof tab);
  int res = 1;
  for (int i = 0; i < wys; i++) {
    string tmp;
    cin >> tmp;
    int ok = -1;
    int ok2 = -1;
    for (int j = 0; j < sze; j++) {
      if (tmp[j] != '.') {
        secik[i] = 1;
        if (j % 2 == 0) {
          if (ok != -1 && ok != (tmp[j] == '1' || tmp[j] == '2')) {
            res = 0;
          }
          ok = (tmp[j] == '1' || tmp[j] == '2');
        } else {
          if (ok != -1 && ok == (tmp[j] == '1' || tmp[j] == '2')) {
            res = 0;
          }
          ok = 1 - (tmp[j] == '1' || tmp[j] == '2');
        }
        if (tmp[j] == '1' || tmp[j] == '4') {
          if (i % 2 == 0) {
            if (tab[j] == 0 || tab[j] == -1)
              tab[j] = 0;
            else
              res = 0;
          } else {
            if (tab[j] == 1 || tab[j] == -1)
              tab[j] = 1;
            else
              res = 0;
          }
        } else {
          if (i % 2 == 0) {
            if (tab[j] == 1 || tab[j] == -1)
              tab[j] = 1;
            else
              res = 0;
          } else {
            if (tab[j] == 0 || tab[j] == -1)
              tab[j] = 0;
            else
              res = 0;
          }
        }
      }
    }
  }
  if (res == -1) res = 0;
  for (int i = 0; i < sze; i++)
    if (tab[i] == -1) {
      res = (res * 2) % 1000003;
    }
  for (int i = 0; i < wys; i++)
    if (secik[i] == 0) {
      res = (res * 2) % 1000003;
    }
  printf("%d\n", res);
  return 0;
}
