#include <bits/stdc++.h>
using namespace std;
int dp[1001][1001], lastof[1001][1001][2], tod[1001][1001], lena, lenb,
    cof[1001][1001];
struct output {
  int c, i, j;
};
vector<output> ans;
string command[4]{"", "INSERT ", "DELETE ", "REPLACE "};
int main() {
  string a, b;
  cin >> a >> b;
  lena = a.size();
  lenb = b.size();
  for (int i = 1; i <= lenb; ++i) {
    dp[0][i] = i;
    lastof[0][i][1] = i - 1;
    cof[0][i] = 1;
  }
  for (int i = 1; i <= lena; ++i) {
    dp[i][0] = i;
    lastof[i][0][0] = i - 1;
    cof[i][0] = 2;
  }
  for (int i = 1; i <= lena; ++i) {
    for (int j = 1; j <= lenb; ++j) {
      if (a[i - 1] == b[j - 1]) {
        dp[i][j] = dp[i - 1][j - 1];
        lastof[i][j][0] = i - 1;
        lastof[i][j][1] = j - 1;
      } else {
        int &ins = dp[i][j - 1], &del = dp[i - 1][j], &rep = dp[i - 1][j - 1];
        if (ins <= del and ins <= rep) {
          cof[i][j] = 1;
          dp[i][j] = ins + 1;
          lastof[i][j][0] = i;
          lastof[i][j][1] = j - 1;
        } else if (del <= ins and del <= rep) {
          cof[i][j] = 2;
          dp[i][j] = del + 1;
          lastof[i][j][0] = i - 1;
          lastof[i][j][1] = j;
        } else {
          cof[i][j] = 3;
          dp[i][j] = rep + 1;
          lastof[i][j][0] = i - 1;
          lastof[i][j][1] = j - 1;
        }
      }
    }
  }
  int i = lena, j = lenb;
  cout << dp[i][j] << '\n';
  while (i || j) {
    if (cof[i][j]) {
      ans.push_back({cof[i][j], i, j});
    }
    int ti = lastof[i][j][0];
    j = lastof[i][j][1];
    i = ti;
  }
  int w = 0;
  for (int k = ans.size() - 1; k > -1; --k) {
    cout << command[ans[k].c];
    switch (ans[k].c) {
      case 2:
        cout << ans[k].i + w << '\n';
        --w;
        break;
      case 1:
        cout << ans[k].i + w + 1 << ' ' << b[ans[k].j - 1] << '\n';
        ++w;
        break;
      case 3:
        cout << ans[k].i + w << ' ' << b[ans[k].j - 1] << '\n';
    }
  }
}
