#include <bits/stdc++.h>
using namespace std;
const int N = 60;
const int M = 1e5 + 10;
char s[N][N], s2[N][N];
int n, m, tot;
pair<int, int> p[M];
bool pd = true;
void dfs(int x, int y, char goal) {
  if (s[x][y] != goal) {
    if (goal == 'U') {
      if (s[x][y] == 'L') {
        dfs(x + 1, y, 'L');
        if (!pd) return;
        p[++tot] = make_pair(x, y);
        s[x][y] = 'U', s[x + 1][y] = 'D';
        s[x][y + 1] = 'U', s[x + 1][y + 1] = 'D';
      } else if (s[x][y] == 'R') {
        dfs(x + 1, y - 1, 'L');
        if (!pd) return;
        p[++tot] = make_pair(x, y - 1);
        s[x][y] = 'U', s[x + 1][y] = 'D';
        s[x][y - 1] = 'U', s[x + 1][y - 1] = 'D';
      } else if (s[x][y] == 'D') {
        dfs(x - 1, y + 1, 'U');
        if (!pd) return;
        p[++tot] = make_pair(x - 1, y);
        s[x - 1][y] = 'L', s[x - 1][y + 1] = 'R';
        s[x][y] = 'L', s[x][y + 1] = 'R';
        dfs(x, y, 'U');
        if (!pd) return;
      }
    } else if (goal == 'L') {
      if (s[x][y] == 'U') {
        dfs(x, y + 1, 'U');
        if (!pd) return;
        p[++tot] = make_pair(x, y);
        s[x][y] = 'L', s[x][y + 1] = 'R';
        s[x + 1][y] = 'L', s[x + 1][y + 1] = 'R';
      } else if (s[x][y] == 'D') {
        dfs(x - 1, y + 1, 'U');
        if (!pd) return;
        p[++tot] = make_pair(x - 1, y);
        s[x - 1][y] = 'L', s[x - 1][y + 1] = 'R';
        s[x][y] = 'L', s[x][y + 1] = 'R';
      } else {
        dfs(x + 1, y - 1, 'L');
        if (!pd) return;
        p[++tot] = make_pair(x, y - 1);
        s[x][y - 1] = 'U', s[x + 1][y - 1] = 'D';
        s[x][y] = 'U', s[x + 1][y] = 'D';
        dfs(x, y, 'L');
        if (!pd) return;
      }
    }
  }
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) scanf("%s", s[i] + 1);
  for (int i = 1; i <= n; i++) scanf("%s", s2[i] + 1);
  for (int i = 1; i <= n && pd; i++)
    for (int j = 1; j <= m && pd; j++) {
      if (s[i][j] != s2[i][j]) {
        if (s2[i][j] == 'U') {
          dfs(i + 1, j, 'L');
          p[++tot] = make_pair(i, j);
          s[i][j] = 'U', s[i + 1][j] = 'D';
          s[i][j + 1] = 'U', s[i + 1][j + 1] = 'D';
        } else {
          dfs(i, j + 1, 'U');
          p[++tot] = make_pair(i, j);
          s[i][j] = 'L', s[i][j + 1] = 'R';
          s[i + 1][j] = 'L', s[i + 1][j + 1] = 'R';
        }
      }
    }
  if (pd) {
    printf("%d\n", tot);
    for (int i = 1; i <= tot; i++) printf("%d %d\n", p[i].first, p[i].second);
  } else
    puts("-1");
  return 0;
}
