#include <bits/stdc++.h>
using namespace std;
const int MaxN = 1005;
const int oo = 0x3f3f3f3f;
char a[MaxN], b[MaxN];
int dp[MaxN][MaxN], pre[MaxN][MaxN][2];
int N, M;
void doit() {
  int i = N, j = M;
  int x, y;
  printf("%d\n", dp[N][M]);
  while (i + j) {
    x = pre[i][j][0];
    y = pre[i][j][1];
    if (x == i - 1 && y == j - 1) {
      if (a[i] != b[j]) printf("REPLACE %d %c\n", i, b[j]);
    } else if (x == i - 1) {
      printf("DELETE %d\n", i);
    } else if (y == j - 1) {
      printf("INSERT %d %c\n", i + 1, b[j]);
    }
    i = x;
    j = y;
  }
}
int main() {
  while (scanf("%s%s", a + 1, b + 1) == 2) {
    N = strlen(a + 1);
    M = strlen(b + 1);
    memset(dp, 0x3f, sizeof(dp));
    dp[0][0] = 0;
    for (int i = 0; i <= N; i++) {
      for (int j = 0; j <= M; j++) {
        if (dp[i][j] != oo) {
          if (i + 1 <= N && j + 1 <= M && a[i + 1] == b[j + 1])
            if (dp[i + 1][j + 1] > dp[i][j]) {
              dp[i + 1][j + 1] = dp[i][j];
              pre[i + 1][j + 1][0] = i;
              pre[i + 1][j + 1][1] = j;
            }
          if (i + 1 <= N && j + 1 <= M)
            if (dp[i + 1][j + 1] > dp[i][j] + 1) {
              dp[i + 1][j + 1] = dp[i][j] + 1;
              pre[i + 1][j + 1][0] = i;
              pre[i + 1][j + 1][1] = j;
            }
          if (i + 1 <= N)
            if (dp[i + 1][j] > dp[i][j] + 1) {
              dp[i + 1][j] = dp[i][j] + 1;
              pre[i + 1][j][0] = i;
              pre[i + 1][j][1] = j;
            }
          if (j + 1 <= M)
            if (dp[i][j + 1] > dp[i][j] + 1) {
              dp[i][j + 1] = dp[i][j] + 1;
              pre[i][j + 1][0] = i;
              pre[i][j + 1][1] = j;
            }
        }
      }
    }
    doit();
  }
  return 0;
}
