#include <bits/stdc++.h>
int ans[1000100][4], cnt[1010][1010], tot, n, m;
char S[100100];
void ins(int x1, int __y1, int x2, int y2) {
  cnt[x2][y2]++;
  ans[++tot][0] = x1, ans[tot][1] = __y1;
  ans[tot][2] = x2, ans[tot][3] = y2;
}
void add(int x, int y, int flag) {
  if (flag) {
    if (x != 1)
      ins(x, y, 1, y);
    else
      ins(x, y, 1, y == 1 ? 2 : 1);
  } else {
    if (x != 2)
      ins(x, y, 2, y);
    else
      ins(x, y, 2, y == 1 ? 2 : 1);
  }
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) {
      scanf("%s", S + 1);
      int len = strlen(S + 1);
      for (int k = len; k >= 1; k--) add(i, j, S[k] == '1');
    }
  for (int i = 1; i <= 2; i++)
    for (int j = 2; j <= m; j++)
      for (int k = 1; k <= cnt[i][j]; k++) ins(i, j, i, 1);
  int now = tot;
  memset(cnt, 0, sizeof(cnt));
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) {
      scanf("%s", S + 1);
      int len = strlen(S + 1);
      for (int k = 1; k <= len; k++) add(i, j, S[k] == '1');
    }
  for (int i = 1; i <= 2; i++)
    for (int j = 2; j <= m; j++)
      for (int k = 1; k <= cnt[i][j]; k++) ins(i, j, i, 1);
  printf("%d\n", tot);
  for (int i = 1; i <= now; i++)
    printf("%d %d %d %d\n", ans[i][0], ans[i][1], ans[i][2], ans[i][3]);
  for (int i = tot; i > now; i--)
    printf("%d %d %d %d\n", ans[i][2], ans[i][3], ans[i][0], ans[i][1]);
}
