#include <bits/stdc++.h>
using namespace std;
const int kN = 50 + 1;
char s[kN][kN], t[kN][kN];
char ss[kN][kN], tt[kN][kN];
int n, m;
char GetOpp(char ch) {
  if (ch == 'L') {
    return 'U';
  } else if (ch == 'R') {
    return 'D';
  } else if (ch == 'U') {
    return 'L';
  } else {
    return 'R';
  }
}
void Transpose() {
  for (int row = 0; row < n; ++row) {
    for (int col = 0; col < m; ++col) {
      ss[col][row] = GetOpp(s[row][col]);
      tt[col][row] = GetOpp(t[row][col]);
    }
  }
  memcpy(s, ss, sizeof(ss));
  memcpy(t, tt, sizeof(tt));
}
bool is_tr = false;
void MakeHor(int row, int col, char a[][kN], vector<pair<int, int> >& path) {
  if (row == n) {
    return;
  }
  if (a[row][col] == 'L') {
    return;
  }
  if (a[row][col + 1] == 'U') {
    path.emplace_back(row, col);
    a[row][col] = a[row + 1][col] = 'L';
    a[row][col + 1] = a[row + 1][col + 1] = 'R';
    return;
  }
  MakeHor(row + 1, col + 1, a, path);
  path.emplace_back(row, col + 1);
  path.emplace_back(row, col);
  a[row][col] = a[row + 1][col] = 'L';
  a[row][col + 1] = a[row + 1][col + 1] = 'R';
  a[row][col + 2] = 'U';
  a[row + 1][col + 2] = 'D';
}
void MakeHorImpl(char a[][kN], vector<pair<int, int> >& path) {
  int row = 0, col = 0;
  while (row != n) {
    if (col == m) {
      ++row;
      col = 0;
      continue;
    }
    if (a[row][col] == 'L') {
      col += 2;
      continue;
    }
    if (a[row][col + 1] == 'U') {
      path.emplace_back(row, col);
      a[row][col] = a[row + 1][col] = 'L';
      a[row][col + 1] = a[row + 1][col + 1] = 'R';
      col += 2;
      continue;
    }
    MakeHor(row, col, a, path);
    col += 2;
  }
}
int main() {
  std::ios_base::sync_with_stdio(false);
  cin >> n >> m;
  for (int row = 0; row < n; ++row) {
    cin >> &(s[row][0]);
  }
  for (int row = 0; row < n; ++row) {
    cin >> &(t[row][0]);
  }
  if (m & 1) {
    Transpose();
    swap(n, m);
    is_tr = true;
  }
  vector<pair<int, int> > lhs, rhs;
  MakeHorImpl(s, lhs);
  MakeHorImpl(t, rhs);
  reverse(rhs.begin(), rhs.end());
  cout << lhs.size() + rhs.size() << '\n';
  for (auto pr : lhs) {
    if (is_tr) {
      swap(pr.first, pr.second);
    }
    cout << pr.first + 1 << ' ' << pr.second + 1 << '\n';
  }
  for (auto pr : rhs) {
    if (is_tr) {
      swap(pr.first, pr.second);
    }
    cout << pr.first + 1 << ' ' << pr.second + 1 << '\n';
  }
  return 0;
}
