#include <bits/stdc++.h>
using namespace std;
int n, m;
char s[50][55], t[50][55];
char z[50][55];
vector<pair<int, int> > a, b;
void solve(char (&s)[50][55], vector<pair<int, int> > &v) {
  while (true) {
    bool done = true;
    for (int i = 0; i < (int)(n - 1); ++i)
      for (int j = 0; j < (int)(m - 1); ++j) {
        if (s[i][j] == 'U' && s[i][j + 1] == 'U' && s[i + 1][j] == 'D' &&
            s[i + 1][j + 1] == 'D') {
          v.push_back(make_pair(i, j));
          s[i][j] = 'L';
          s[i][j + 1] = 'R';
          s[i + 1][j] = 'L';
          s[i + 1][j + 1] = 'R';
          done = false;
        }
      }
    for (int i = 0; i < (int)(n - 1); ++i)
      for (int j = 0; j < (int)(m - 2); ++j) {
        if (s[i][j] == 'U' && s[i + 1][j] == 'D' && s[i][j + 1] == 'L' &&
            s[i][j + 2] == 'R' && s[i + 1][j + 1] == 'L' &&
            s[i + 1][j + 2] == 'R') {
          v.push_back(make_pair(i, j + 1));
          v.push_back(make_pair(i, j));
          s[i][j] = 'L';
          s[i + 1][j] = 'L';
          s[i][j + 1] = 'R';
          s[i + 1][j + 1] = 'R';
          s[i][j + 2] = 'U';
          s[i + 1][j + 2] = 'D';
          done = false;
        }
      }
    if (done) {
      break;
    }
  }
}
void inv(char (&s)[50][55]) {
  for (int i = 0; i < (int)(n); ++i)
    for (int j = 0; j < (int)(m); ++j) {
      z[j][i] = s[i][j];
    }
  for (int i = 0; i < (int)(m); ++i)
    for (int j = 0; j < (int)(n); ++j) {
      if (z[i][j] == 'U')
        z[i][j] = 'L';
      else if (z[i][j] == 'D')
        z[i][j] = 'R';
      else if (z[i][j] == 'L')
        z[i][j] = 'U';
      else
        z[i][j] = 'D';
    }
  for (int i = 0; i < (int)(m); ++i)
    for (int j = 0; j < (int)(n); ++j) {
      s[i][j] = z[i][j];
    }
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 0; i < (int)(n); ++i) scanf("%s", s[i]);
  for (int i = 0; i < (int)(n); ++i) scanf("%s", t[i]);
  bool flag = false;
  if (m % 2 == 1) {
    flag = true;
    inv(s);
    inv(t);
    swap(n, m);
  }
  solve(s, a);
  solve(t, b);
  reverse(b.begin(), b.end());
  if (flag) {
    for (pair<int, int> &x : a) swap(x.first, x.second);
    for (pair<int, int> &x : b) swap(x.first, x.second);
  }
  printf("%d\n", int(a.size()) + int(b.size()));
  for (pair<int, int> x : a) printf("%d %d\n", x.first + 1, x.second + 1);
  for (pair<int, int> x : b) printf("%d %d\n", x.first + 1, x.second + 1);
  return 0;
}
