#include <bits/stdc++.h>
using namespace std;
char s[55][55], ss[55][55];
vector<pair<int, int> > path1, path2;
int r, c;
bool check(char s[][55]) {
  for (int i = 0; i < r; i++) {
    for (int j = 0; j < c; j += 2) {
      if (s[i][j] != 'L') return false;
    }
  }
  return true;
}
bool check2(char s[][55]) {
  for (int i = 0; i < r; i += 2) {
    for (int j = 0; j < c; j++) {
      if (s[i][j] != 'U') return false;
    }
  }
  return true;
}
bool isUU(char s[][55], int y, int x) {
  if (x + 1 < c && s[y][x] == 'U' && s[y][x + 1] == 'U') return true;
  return false;
}
bool isLL(char s[][55], int y, int x) {
  if (y + 1 < r && s[y][x] == 'L' && s[y + 1][x] == 'L') return true;
  return false;
}
void toHor(vector<pair<int, int> > &path, char s[][55], int y, int x) {
  path.push_back(make_pair(y, x));
  s[y][x] = s[y + 1][x] = 'L';
  s[y][x + 1] = s[y + 1][x + 1] = 'R';
}
void toVer(vector<pair<int, int> > &path, char s[][55], int y, int x) {
  path.push_back(make_pair(y, x));
  s[y][x] = s[y][x + 1] = 'U';
  s[y + 1][x] = s[y + 1][x + 1] = 'D';
}
void print(char s[][55]) {
  puts("\nDEBUG");
  for (int i = 0; i < r; i++) {
    for (int j = 0; j < c; j++) printf("%c", s[i][j]);
    puts("");
  }
}
void change(vector<pair<int, int> > &path, char s[][55], int y, int x,
            bool type) {
  if (x >= c) {
    change(path, s, y + 1, 0, false);
    return;
  }
  if (y >= r) return;
  if (!type && x + 1 < c && s[y][x] == 'U' && s[y][x + 1] == 'L') {
    change(path, s, y, x + 1, true);
    if (s[y][x + 1] == 'L') toVer(path, s, y, x + 1);
    toHor(path, s, y, x);
    change(path, s, y, x + 2, false);
    return;
  }
  if (!type && isUU(s, y, x)) {
    toHor(path, s, y, x);
    change(path, s, y, x + 2, false);
    return;
  }
  if (!type && s[y][x] == 'L') {
    change(path, s, y, x + 2, false);
    return;
  }
  if (isUU(s, y, x)) {
    toHor(path, s, y, x);
    return;
  }
  if (isLL(s, y, x)) {
    toVer(path, s, y, x);
    return;
  }
  if (s[y][x] == 'L') {
    change(path, s, y + 1, x, true);
    if (s[y + 1][x] == 'U') toHor(path, s, y + 1, x);
    toVer(path, s, y, x);
  } else {
    change(path, s, y, x + 1, true);
    if (s[y][x + 1] == 'L') toVer(path, s, y, x + 1);
    toHor(path, s, y, x);
  }
}
void change2(vector<pair<int, int> > &path, char s[][55], int y, int x,
             bool type) {
  if (y >= r) {
    change2(path, s, 0, x + 1, false);
    return;
  }
  if (x >= c) return;
  if (!type && y + 1 < r && s[y][x] == 'L' && s[y + 1][x] == 'U') {
    change2(path, s, y + 1, x, true);
    if (s[y + 1][x] == 'U') toHor(path, s, y + 1, x);
    toVer(path, s, y, x);
    change2(path, s, y + 2, x, false);
    return;
  }
  if (!type && isLL(s, y, x)) {
    toVer(path, s, y, x);
    change2(path, s, y + 2, x, false);
    return;
  }
  if (!type && s[y][x] == 'U') {
    change2(path, s, y + 2, x, false);
    return;
  }
  if (isUU(s, y, x)) {
    toHor(path, s, y, x);
    return;
  }
  if (isLL(s, y, x)) {
    toVer(path, s, y, x);
    return;
  }
  if (s[y][x] == 'L') {
    change2(path, s, y + 1, x, true);
    if (s[y + 1][x] == 'U') toHor(path, s, y + 1, x);
    toVer(path, s, y, x);
  } else {
    change2(path, s, y, x + 1, true);
    if (s[y][x + 1] == 'L') toVer(path, s, y, x + 1);
    toHor(path, s, y, x);
  }
}
int main() {
  cin >> r >> c;
  for (int i = 0; i < r; i++) cin >> s[i];
  for (int i = 0; i < r; i++) cin >> ss[i];
  bool flag = true;
  if (c % 2 == 0) {
    change(path1, s, 0, 0, false);
    if (!check(s))
      flag = false;
    else {
      change(path2, ss, 0, 0, false);
      if (!check(ss)) flag = false;
    }
  } else {
    change2(path1, s, 0, 0, false);
    if (!check2(s))
      flag = false;
    else {
      change2(path2, ss, 0, 0, false);
      if (!check2(ss)) flag = false;
    }
  }
  if (!flag)
    puts("-1");
  else {
    printf("%d\n", path1.size() + path2.size());
    for (int i = 0; i < path1.size(); i++)
      printf("%d %d\n", path1[i].first + 1, path1[i].second + 1);
    for (int i = path2.size() - 1; i >= 0; i--)
      printf("%d %d\n", path2[i].first + 1, path2[i].second + 1);
  }
  return 0;
}
