#include <bits/stdc++.h>
using namespace std;
char a[1002], b[1002];
int dp[1002][1002], len1, len2, dir[1002][1002];
bool vis[1002][1002];
int call(int i, int j) {
  int k;
  if (j == len2) {
    dir[i][j] = 4;
    return len1 - i;
  }
  if (i == len1) {
    dir[i][j] = 5;
    return len2 - j;
  }
  if (vis[i][j] == true) return dp[i][j];
  int r1 = 0, r2 = 0, r3 = 0, ret = 0;
  if (a[i] != b[j]) {
    r1 = call(i + 1, j);
    r2 = call(i + 1, j + 1);
    r3 = call(i, j + 1);
    if (r1 <= r2 && r1 <= r3) {
      ret = r1;
      dir[i][j] = 1;
    } else if (r2 <= r1 && r2 <= r3) {
      ret = r2;
      dir[i][j] = 2;
    } else {
      ret = r3;
      dir[i][j] = 3;
    }
    ret++;
  } else {
    ret = call(i + 1, j + 1);
    dir[i][j] = 0;
  }
  vis[i][j] = true;
  return dp[i][j] = ret;
}
void print(int i, int j, int off) {
  if (i == len1 && j == len2) {
    printf("\n");
    return;
  }
  if (dir[i][j] == 2) {
    printf("REPLACE %d %c\n", i + off, b[j]);
    print(i + 1, j + 1, off);
  } else if (dir[i][j] == 1) {
    printf("DELETE %d\n", i + off);
    print(i + 1, j, off - 1);
  } else if (dir[i][j] == 3) {
    printf("INSERT %d %c\n", i + off, b[j]);
    print(i, j + 1, off + 1);
  } else if (dir[i][j] == 5) {
    while (j != len2) {
      printf("INSERT %d %c\n", i + off, b[j]);
      i++;
      j++;
    }
  } else if (dir[i][j] == 4) {
    while (i < len1) {
      printf("DELETE %d\n", i + off);
      i++;
      off--;
    }
  } else
    print(i + 1, j + 1, off);
}
int main() {
  scanf("%s%s", a, b);
  len1 = strlen(a);
  len2 = strlen(b);
  printf("%d\n", call(0, 0));
  print(0, 0, 1);
  return 0;
}
