#include <bits/stdc++.h>
using namespace std;
char a[55][55], b[55][55], auxa[55][55], auxb[55][55];
pair<int, int> sola[100010], solb[100010];
int n, m;
int posibil(char x[55][55], pair<int, int> sol[100010]) {
  int changes, i, j;
  changes = 1;
  while (changes) {
    changes = 0;
    for (i = 1; i <= n; i++) {
      for (j = 1; j <= m; j++) {
        if (x[i][j] == 'U' && i != n) {
          if (x[i][j + 1] == 'U') {
            changes = 1;
            x[i][j] = x[i + 1][j] = 'L';
            x[i][j + 1] = x[i + 1][j + 1] = 'R';
            sol[0].first++;
            sol[sol[0].first] = make_pair(i, j);
          } else if (x[i][j + 1] == 'L' && x[i][j + 2] == 'R' &&
                     x[i + 1][j + 1] == 'L' && x[i + 1][j + 2] == 'R' &&
                     i + 1 <= n && j + 2 <= m) {
            x[i][j + 2] = 'U';
            x[i + 1][j + 2] = 'D';
            x[i][j] = x[i + 1][j] = 'L';
            x[i][j + 1] = x[i + 1][j + 1] = 'R';
            sol[0].first++;
            sol[sol[0].first] = make_pair(i, j + 1);
            sol[0].first++;
            sol[sol[0].first] = make_pair(i, j);
          }
        }
      }
    }
  }
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= m; j++) {
      if (x[i][j] == 'U' || x[i][j] == 'D') {
        return 0;
      }
    }
  }
  return 1;
}
int main() {
  FILE *fin = stdin;
  FILE *fout = stdout;
  int i, j, transp;
  fscanf(fin, "%d%d\n", &n, &m);
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= m; j++) {
      a[i][j] = fgetc(fin);
    }
    fgetc(fin);
  }
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= m; j++) {
      b[i][j] = fgetc(fin);
    }
    fgetc(fin);
  }
  transp = 0;
  if (m % 2 == 1) {
    for (i = 1; i <= n; i++) {
      for (j = 1; j <= m; j++) {
        auxa[j][i] = a[i][j];
        auxb[j][i] = b[i][j];
      }
    }
    for (i = 1; i <= m; i++) {
      for (j = 1; j <= n; j++) {
        a[i][j] = auxa[i][j];
        b[i][j] = auxb[i][j];
      }
    }
    for (i = 1; i <= m; i++) {
      for (j = 1; j <= n; j++) {
        if (a[i][j] == 'U')
          a[i][j] = 'L';
        else if (a[i][j] == 'D')
          a[i][j] = 'R';
        else if (a[i][j] == 'L')
          a[i][j] = 'U';
        else
          a[i][j] = 'D';
        if (b[i][j] == 'U')
          b[i][j] = 'L';
        else if (b[i][j] == 'D')
          b[i][j] = 'R';
        else if (b[i][j] == 'L')
          b[i][j] = 'U';
        else
          b[i][j] = 'D';
      }
    }
    swap(n, m);
    transp = 1;
  }
  if (posibil(a, sola) && posibil(b, solb)) {
    fprintf(fout, "%d\n", sola[0].first + solb[0].first);
    for (i = 1; i <= sola[0].first; i++) {
      if (transp)
        fprintf(fout, "%d %d\n", sola[i].second, sola[i].first);
      else
        fprintf(fout, "%d %d\n", sola[i].first, sola[i].second);
    }
    for (i = solb[0].first; i; i--) {
      if (transp)
        fprintf(fout, "%d %d\n", solb[i].second, solb[i].first);
      else
        fprintf(fout, "%d %d\n", solb[i].first, solb[i].second);
    }
  } else
    fprintf(fout, "-1");
  return 0;
}
