#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000 + 3;
string a;
string b;
int ans[maxn][maxn];
bool asn[maxn][maxn];
bool check(int x, int y) {
  if (x < 0 || y < 0) return 0;
  return 1;
}
void dp(int x, int y) {
  if (x == 0) {
    if (y <= 0) {
      asn[x][y] = true;
      return;
    }
    if (asn[x][y] == true) return;
    asn[x][y] = true;
    ans[x][y] = y;
    dp(x, y - 1);
    return;
  }
  if (y == 0) {
    if (x <= 0) {
      asn[x][y] = true;
      return;
    }
    if (asn[x][y] == true) return;
    asn[x][y] = true;
    ans[x][y] = x;
    dp(x - 1, y);
    return;
  }
  if (check(x, y) == 0) return;
  if (asn[x][y] == true) return;
  asn[x][y] = true;
  if (a[x - 1] == b[y - 1]) {
    dp(x - 1, y - 1);
    ans[x][y] = ans[x - 1][y - 1];
  } else {
    dp(x - 1, y);
    dp(x - 1, y - 1);
    dp(x, y - 1);
    ans[x][y] =
        min(ans[x - 1][y] + 1, min(ans[x - 1][y - 1] + 1, ans[x][y - 1] + 1));
  }
}
void show(int x, int y) {
  if (check(x, y) == 0) return;
  if (ans[x][y] == ans[x - 1][y] + 1 && asn[x - 1][y]) {
    cout << "DELETE " << x << endl;
    show(x - 1, y);
    return;
  }
  if (ans[x][y] == ans[x][y - 1] + 1 && asn[x][y - 1] && y != 0) {
    cout << "INSERT " << x + 1 << " " << b[y - 1] << endl;
    show(x, y - 1);
    return;
  }
  if (ans[x][y] == ans[x - 1][y - 1] + 1 && asn[x - 1][y - 1] && y != 0) {
    cout << "REPLACE " << x << " " << b[y - 1] << endl;
    show(x - 1, y - 1);
    return;
  }
  show(x - 1, y - 1);
}
int main() {
  cin >> a >> b;
  dp(a.size(), b.size());
  cout << ans[a.size()][b.size()] << endl;
  show(a.size(), b.size());
  return 0;
}
