#include <bits/stdc++.h>
using namespace std;
const int N = 55;
int n, m, ff, st[N][N];
char s[N];
map<char, int> mp;
vector<pair<int, int> > ans, a1, a2;
void sol(int x, int y) {
  if (st[x][y] == 1) {
    if (st[x][y + 1] != 1) sol(x, y + 1);
    st[x][y] = st[x + 1][y] = 3;
    st[x][y + 1] = st[x + 1][y + 1] = 4;
    ans.push_back(make_pair(x, y));
  } else {
    if (st[x + 1][y] != 3) sol(x + 1, y);
    st[x][y] = st[x][y + 1] = 1;
    st[x + 1][y] = st[x + 1][y + 1] = 2;
    ans.push_back(make_pair(x, y));
  }
}
void gt() {
  ff = !(n & 1);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) {
      if (!ff && st[i][j] == 1) sol(i, j);
      if (ff && st[i][j] == 3) sol(i, j);
    }
}
int main() {
  mp['U'] = 1;
  mp['D'] = 2;
  mp['L'] = 3;
  mp['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++) st[i][j] = mp[s[j]];
  }
  gt();
  a1 = ans;
  ans.clear();
  for (int i = 1; i <= n; i++) {
    scanf("%s", s + 1);
    for (int j = 1; j <= m; j++) st[i][j] = mp[s[j]];
  }
  gt();
  a2 = ans;
  printf("%d\n", a1.size() + a2.size());
  for (int i = 0; i < a1.size(); i++)
    printf("%d %d\n", a1[i].first, a1[i].second);
  for (int i = a2.size() - 1; i >= 0; i--)
    printf("%d %d\n", a2[i].first, a2[i].second);
  return 0;
}
