#include <bits/stdc++.h>
using namespace std;
char s[1024], t[1024];
int f[1024][1024];
char op[1024][1024] = {};
int ps[1024][1024];
int m, n;
void out(int i, int j) {
  if (i == 0 && j == 0) return;
  switch (op[i][j]) {
    case 'I': {
      out(i, j - 1);
      printf("INSERT %d %c\n", ps[i][j], t[j - 1]);
    } break;
    case 'D': {
      out(i - 1, j);
      printf("DELETE %d\n", ps[i][j]);
    } break;
    case 'R': {
      out(i - 1, j - 1);
      printf("REPLACE %d %c\n", ps[i][j], t[j - 1]);
    } break;
    case '\0': {
      out(i - 1, j - 1);
    } break;
  }
}
int main() {
  scanf("%s", s);
  scanf("%s", t);
  m = strlen(s);
  n = strlen(t);
  memset(f, 255, sizeof(f));
  f[0][0] = 0;
  for (int i = 1; i <= m; i++) {
    f[i][0] = i;
    op[i][0] = 'D';
    ps[i][0] = 1;
  }
  for (int i = 1; i <= n; i++) {
    f[0][i] = i;
    op[0][i] = 'I';
    ps[0][i] = i;
  }
  for (int i = 0; i <= m; i++)
    for (int j = 0; j <= n; j++) {
      if (j < n) {
        if (f[i][j + 1] < 0 || f[i][j + 1] > f[i][j] + 1) {
          f[i][j + 1] = f[i][j] + 1;
          op[i][j + 1] = 'I';
          ps[i][j + 1] = j + 1;
        }
      }
      if (i < m) {
        if (f[i + 1][j] < 0 || f[i + 1][j] > f[i][j] + 1) {
          f[i + 1][j] = f[i][j] + 1;
          op[i + 1][j] = 'D';
          ps[i + 1][j] = j + 1;
        }
      }
      if (i < m && j < n) {
        if (s[i] == t[j]) {
          if (f[i + 1][j + 1] < 0 || f[i + 1][j + 1] > f[i][j]) {
            f[i + 1][j + 1] = f[i][j];
            op[i + 1][j + 1] = '\0';
          }
        } else {
          if (f[i + 1][j + 1] < 0 || f[i + 1][j + 1] > f[i][j] + 1) {
            f[i + 1][j + 1] = f[i][j] + 1;
            op[i + 1][j + 1] = 'R';
            ps[i + 1][j + 1] = j + 1;
          }
        }
      }
    }
  printf("%d\n", f[m][n]);
  out(m, n);
  return 0;
}
