#include <bits/stdc++.h>
using namespace std;
int n, m, flip, sta[55][55];
char s[55];
map<char, int> f;
vector<pair<int, int> > ans, ans1, ans2;
void deal(int x, int y) {
  if (sta[x][y] == 1) {
    if (sta[x][y + 1] != 1) deal(x, y + 1);
    sta[x][y] = sta[x + 1][y] = 3;
    sta[x][y + 1] = sta[x + 1][y + 1] = 4;
    ans.push_back(make_pair(x, y));
  } else {
    if (sta[x + 1][y] != 3) deal(x + 1, y);
    sta[x][y] = sta[x][y + 1] = 1;
    sta[x + 1][y] = sta[x + 1][y + 1] = 2;
    ans.push_back(make_pair(x, y));
  }
}
void deal() {
  flip = !(n & 1);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) {
      if (!flip && sta[i][j] == 1) deal(i, j);
      if (flip && sta[i][j] == 3) deal(i, j);
    }
}
int main() {
  f['U'] = 1;
  f['D'] = 2;
  f['L'] = 3;
  f['R'] = 4;
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) {
    scanf("%s", s + 1);
    for (int j = 1; j <= m; j++) sta[i][j] = f[s[j]];
  }
  deal();
  ans1 = ans;
  ans.clear();
  for (int i = 1; i <= n; i++) {
    scanf("%s", s + 1);
    for (int j = 1; j <= m; j++) sta[i][j] = f[s[j]];
  }
  deal();
  ans2 = ans;
  cout << ans1.size() + ans2.size() << endl;
  for (int i = 0; i < ans1.size(); i++) {
    int u = ans1[i].first, v = ans1[i].second;
    cout << u << " " << v << endl;
  }
  for (int i = ans2.size() - 1; i >= 0; i--) {
    int u = ans2[i].first, v = ans2[i].second;
    cout << u << " " << v << endl;
  }
}
