#include <bits/stdc++.h>
using namespace std;
int ni() {
  int a;
  scanf("%d", &a);
  return a;
}
double nf() {
  double a;
  scanf("%lf", &a);
  return a;
}
char sbuf[100005];
string ns() {
  scanf("%s", sbuf);
  return sbuf;
}
long long nll() {
  long long a;
  scanf("%lld", &a);
  return a;
}
template <class T>
void out(T a, T b) {
  bool first = true;
  for (T i = a; i != b; ++i) {
    if (!first) printf(" ");
    first = false;
    cout << *i;
  }
  printf("\n");
}
template <class T>
void outl(T a, T b) {
  for (T i = a; i != b; ++i) {
    cout << *i << "\n";
  }
}
int n, m;
int moo(char c) {
  if (c <= '9' && c >= '0') return c - '0';
  return c - 'A' + 10;
}
int a[6][6];
bool inside(int a) { return a >= 0 && a < 6; }
char ss[1005];
vector<string> ans;
void add(char c, int z, int num) {
  int j;
  sprintf(ss, "%c%d\n", c, z + 1);
  while (num) {
    if (c == 'L') {
      int t = a[z][0];
      for (j = (0); j < (((5))); ++j) a[z][j] = a[z][j + 1];
      a[z][5] = t;
    }
    if (c == 'R') {
      int t = a[z][5];
      for (j = (0); j < (((5))); ++j) a[z][5 - j] = a[z][4 - j];
      a[z][0] = t;
    }
    if (c == 'U') {
      int t = a[0][z];
      for (j = (0); j < (((5))); ++j) a[j][z] = a[j + 1][z];
      a[5][z] = t;
    }
    if (c == 'D') {
      int t = a[5][z];
      for (j = (0); j < (((5))); ++j) a[5 - j][z] = a[4 - j][z];
      a[0][z] = t;
    }
    ans.push_back(ss);
    --num;
  }
}
int main() {
  int i, j, k;
  for (i = (0); i < (((6))); ++i) {
    string s = ns();
    for (j = (0); j < (((6))); ++j) a[i][j] = moo(s[j]);
  }
startOver:
  int done = 0;
  for (i = (0); i < (((15))); ++i) {
    for (j = (0); j < (((15))); ++j) {
      int y = j;
      int x = i - j;
      if (inside(x) && inside(y)) {
        int xx = -1, yy = -1;
        int ii, jj;
        for (ii = (0); ii < ((6)); ++ii)
          for (jj = (0); jj < ((6)); ++jj)
            if (a[ii][jj] == y * 6 + x) xx = jj, yy = ii;
        ;
        if (x == 5 && y == 0) x = 5;
        if (xx == x && yy == y) {
        } else {
          bool needUp = 0;
          if (yy == 5 && xx == 5) {
            if (y == 5) {
              y = 4;
              add('U', x, 1);
              needUp = 1;
            }
            if (x < 4)
              add('L', 5, 4 - x);
            else if (x > 4)
              add('R', 5, 1);
            add('D', x, 5 - y);
            add('L', 5, 1);
            add('U', x, 5 - y);
            if (x != 5) add('R', 5, 5 - x);
            if (needUp) {
              add('D', x, 1);
              y = 5;
            }
          } else {
            if (yy == 5 && xx != 4) {
              yy = 4;
              add('U', xx, 1);
              needUp = 1;
            }
            if (xx < 4)
              add('L', 5, 4 - xx);
            else if (xx > 4)
              add('R', 5, 1);
            add('D', xx, 5 - yy);
            add('L', 5, 1);
            add('U', xx, 5 - yy);
            if (xx != 5) add('R', 5, 5 - xx);
            if (needUp) {
              add('D', xx, 1);
              yy = 5;
            }
            needUp = 0;
            if (y == 5) {
              y = 4;
              add('U', x, 1);
              needUp = 1;
            }
            if (x != 5) add('L', 5, 5 - x);
            add('D', x, 5 - y);
            add('R', 5, 1);
            add('U', x, 5 - y);
            if (x < 4)
              add('R', 5, 4 - x);
            else if (x > 4)
              add('L', 5, 1);
            if (needUp) {
              add('D', x, 1);
              y = 5;
            }
          }
        }
        if (a[y][x] != y * 6 + x) {
          printf("%d %d\n", x, y);
          return 0;
        }
        ++done;
      }
      if (done == 34) {
        if (a[5][5] != 35) {
          add('L', 5, 3);
          goto startOver;
        }
        printf("%d\n", ans.size());
        for (i = (0); i < (((ans.size()))); ++i) printf("%s", ans[i].c_str());
        return 0;
      }
    }
  }
  return 0;
}
