#include <bits/stdc++.h>
using namespace std;
bool vis[8][8];
int d[8][2] = {{-1, 0}, {1, 0},   {0, 1}, {0, -1},
               {-1, 1}, {-1, -1}, {1, 1}, {1, -1}};
string dis[8] = {"L", "R", "U", "D", "LU", "LD", "RU", "RD"};
struct point {
  int pre;
  string coo;
  int count;
  int index;
  int step;
};
struct point p[1000];
void pri(int t) {
  if (t == 0) return;
  pri(p[t].pre);
  cout << dis[p[t].step] << endl;
}
int main() {
  struct point start;
  start.count = 0;
  start.pre = -1;
  cin >> start.coo;
  string end;
  cin >> end;
  start.index = 0;
  int f = 0, r = 0;
  start.step = 0;
  p[r++] = start;
  struct point temp;
  vis[start.coo[0] - 'a'][start.coo[1] - '0'] = 1;
  while (f < r) {
    temp = p[f];
    if (temp.coo == end) {
      cout << temp.count << endl;
      break;
    }
    for (int i = 0; i < 8; i++) {
      if (temp.coo[0] + d[i][0] < 'a' || temp.coo[0] + d[i][0] > 'h') continue;
      if (temp.coo[1] + d[i][1] < '1' || temp.coo[1] + d[i][1] > '8') continue;
      if (vis[(temp.coo[0] + d[i][0]) - 'a'][(temp.coo[1] + d[i][1]) - '0'])
        continue;
      struct point t;
      t.pre = temp.index;
      t.coo = temp.coo;
      t.coo[0] = t.coo[0] + d[i][0];
      t.coo[1] = t.coo[1] + d[i][1];
      t.count = temp.count + 1;
      t.index = r;
      t.step = i;
      vis[t.coo[0] - 'a'][t.coo[1] - '0'] = 1;
      p[r++] = t;
    }
    f++;
  }
  pri(temp.index);
}
