#include <bits/stdc++.h>
using namespace std;
const int MAXN = 53;
const int MAXM = 53;
char mp_cur[MAXN][MAXM];
char mp_end[MAXN][MAXM];
vector<pair<int, int>> ans;
int n, m;
void podn(int i, int j);
void opus(int i, int j) {
  if (mp_cur[i][j + 1] == 'L') {
    podn(i, j + 1);
  }
  ans.push_back({i + 1, j + 1});
  mp_cur[i][j] = 'L';
  mp_cur[i][j + 1] = 'R';
  mp_cur[i + 1][j] = 'L';
  mp_cur[i + 1][j + 1] = 'R';
}
void podn(int i, int j) {
  if (mp_cur[i + 1][j] == 'U') {
    opus(i + 1, j);
  } else if (mp_cur[i + 1][j] == 'R') {
    podn(i + 1, j - 1);
    opus(i + 1, j);
  }
  ans.push_back({i + 1, j + 1});
  mp_cur[i][j] = 'U';
  mp_cur[i][j + 1] = 'U';
  mp_cur[i + 1][j] = 'D';
  mp_cur[i + 1][j + 1] = 'D';
}
bool uh(int i, int j) {
  if (0 <= i && i < n && 0 <= j && j < m) {
    return false;
  } else {
    return true;
  }
}
bool correct() {
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < m; ++j) {
      if (mp_cur[i][j] == 'U') {
        if (uh(i + 1, j)) {
          return false;
        } else {
          if (!(mp_cur[i + 1][j] == 'D')) {
            return false;
          }
        }
      } else if (mp_cur[i][j] == 'D') {
        if (uh(i - 1, j)) {
          return false;
        } else {
          if (!(mp_cur[i - 1][j] == 'U')) return false;
        }
      } else if (mp_cur[i][j] == 'L') {
        if (uh(i, j + 1)) {
          return false;
        } else {
          if (!(mp_cur[i][j + 1] == 'R')) return false;
        }
      } else if (mp_cur[i][j] == 'R') {
        if (uh(i, j - 1)) {
          return false;
        } else {
          if (!(mp_cur[i][j - 1] == 'L')) return false;
        }
      }
    }
  }
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < m; ++j) {
      if (mp_end[i][j] == 'U') {
        if (uh(i + 1, j)) {
          return false;
        } else {
          if (!(mp_end[i + 1][j] == 'D')) return false;
        }
      } else if (mp_end[i][j] == 'D') {
        if (uh(i - 1, j)) {
          return false;
        } else {
          if (!(mp_end[i - 1][j] == 'U')) return false;
        }
      } else if (mp_end[i][j] == 'L') {
        if (uh(i, j + 1)) {
          return false;
        } else {
          if (!(mp_end[i][j + 1] == 'R')) return false;
        }
      } else if (mp_end[i][j] == 'R') {
        if (uh(i, j - 1)) {
          return false;
        } else {
          if (!(mp_end[i][j - 1] == 'L')) return false;
        }
      }
    }
  }
  return true;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> m;
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < m; ++j) {
      cin >> mp_cur[i][j];
    }
  }
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < m; ++j) {
      cin >> mp_end[i][j];
    }
  }
  if (!correct()) {
    cout << -1 << endl;
    return 0;
  }
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < m; ++j) {
      if (mp_cur[i][j] != mp_end[i][j]) {
        if (mp_cur[i][j] == 'U') {
          opus(i, j);
        } else if (mp_cur[i][j] == 'L') {
          podn(i, j);
        }
      }
    }
  }
  cout << ans.size() << endl;
  for (int i = 0; i < ans.size(); ++i) {
    cout << ans[i].first << ' ' << ans[i].second << endl;
  }
  return 0;
}
