#include <bits/stdc++.h>
using namespace std;
template <typename T>
using vc = vector<T>;
using pii = pair<int, int>;
int N, M;
vector<vector<char> > tiles1, tiles2;
void apply(vector<vector<char> >& tiles, pii place) {
  int x = place.second;
  int y = place.first;
  if (tiles[y][x] == 'U') {
    tiles[y][x] = 'L';
    tiles[y + 1][x] = 'L';
    tiles[y][x + 1] = 'R';
    tiles[y + 1][x + 1] = 'R';
  } else if (tiles[y][x] == 'L') {
    tiles[y][x] = 'U';
    tiles[y + 1][x] = 'D';
    tiles[y][x + 1] = 'U';
    tiles[y + 1][x + 1] = 'D';
  } else {
    while (true)
      ;
  }
}
vector<pair<int, int> > operations(vector<vector<char> > tiles) {
  vector<pair<int, int> > ret;
  for (int i = 0; i < N - 1; i += 2) {
    for (int j = 0; j < M; ++j) {
      if (tiles[i][j] != 'U') {
        int ii = i;
        int jj = j;
        vector<pii> st;
        int odd = 1;
        while (true) {
          if (odd == 1) {
            st.push_back({ii, jj});
            if (tiles[ii + 1][jj] == 'L') {
              break;
            } else {
              ii += 1;
            }
          } else {
            st.push_back({ii, jj});
            if (tiles[ii][jj + 1] == 'U') {
              break;
            } else {
              jj += 1;
            }
          }
          odd = 1 - odd;
        }
        for (int i = st.size() - 1; i >= 0; i--) {
          ret.push_back(st[i]);
          apply(tiles, st[i]);
        }
      }
    }
  }
  return ret;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> N >> M;
  for (int i = 0; i < N; ++i) {
    tiles1.push_back(vector<char>(M, 0));
    for (int j = 0; j < M; ++j) {
      cin >> tiles1[i][j];
    }
  }
  for (int i = 0; i < N; ++i) {
    tiles2.push_back(vector<char>(M, 0));
    for (int j = 0; j < M; ++j) {
      cin >> tiles2[i][j];
    }
  }
  vector<pii> ret1 = operations(tiles1);
  vector<pii> ret2 = operations(tiles2);
  reverse(ret2.begin(), ret2.end());
  for (auto p : ret2) {
    ret1.push_back(p);
  }
  cout << ret1.size() << endl;
  for (auto p : ret1) {
    cout << p.first + 1 << " " << p.second + 1 << "\n";
  }
}
