#include <bits/stdc++.h>
using namespace std;
struct data {
  int x;
  int y;
};
data par[200][200];
char a, b;
int color[200][200];
int c, d, a1, b1;
int ans, cnt = 0;
int dx[] = {0, 0, 1, -1, -1, -1, 1, 1};
int dy[] = {1, -1, 0, 0, 1, -1, 1, -1};
string str[] = {"U", "D", "R", "L", "LU", "LD", "RU", "RD"};
vector<string> result;
bool valid(int l, int m) { return (l >= 97 && l <= 104) && (m >= 1 && m <= 8); }
void print_path(int i, int j) {
  if (i == a1 && j == c) return;
  print_path(par[i][j].x, par[i][j].y);
  result.push_back(str[color[i][j] - 1]);
}
void bfs(int x, int y) {
  queue<int> q;
  q.push(x);
  q.push(y);
  while (!q.empty()) {
    int u = q.front();
    q.pop();
    int v = q.front();
    q.pop();
    for (int i = 0; i < 8; i++) {
      int l = u + dx[i];
      int m = v + dy[i];
      if (valid(l, m) && !color[l][m]) {
        par[l][m].x = u;
        par[l][m].y = v;
        color[l][m] = i + 1;
        q.push(l);
        q.push(m);
      }
    }
  }
}
int main() {
  cin >> a >> c;
  getchar();
  cin >> b >> d;
  a1 = (int)a;
  b1 = (int)b;
  bfs(a1, c);
  print_path(b1, d);
  cout << result.size() << endl;
  for (int i = 0; i < result.size(); i++) cout << result[i] << endl;
}
