#include <bits/stdc++.h>
using namespace std;
int dp[1010][1010], n, m, x, t;
string s1, s2;
void f(int nown, int nowm) {
  if (dp[nown][nowm] == 0) {
    cout << t << endl;
    return;
  }
  if (dp[nown - 1][nowm] < dp[nown][nowm] && nown) {
    t++;
    f(nown - 1, nowm);
    cout << "DELETE " << nown + x << "\n";
    x--;
    return;
  }
  if (dp[nown][nowm - 1] < dp[nown][nowm] && nowm) {
    t++;
    f(nown, nowm - 1);
    x++;
    cout << "INSERT " << nown + x << " " << s2[nowm] << "\n";
    return;
  }
  if (dp[nown - 1][nowm - 1] == dp[nown][nowm]) {
    f(nown - 1, nowm - 1);
    return;
  }
  if (dp[nown - 1][nowm - 1] < dp[nown][nowm]) {
    t++;
    f(nown - 1, nowm - 1);
    cout << "REPLACE " << nown + x << " " << s2[nowm] << "\n";
    return;
  }
}
int main() {
  cin >> s1 >> s2;
  n = s1.size();
  m = s2.size();
  s1 = " " + s1;
  s2 = " " + s2;
  for (int i = 0; i <= n; i++) {
    dp[i][0] = i;
  }
  for (int i = 1; i <= m; i++) {
    dp[0][i] = i;
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      if (s1[i] == s2[j]) {
        dp[i][j] = dp[i - 1][j - 1];
      } else {
        dp[i][j] = min(min(dp[i - 1][j - 1], dp[i - 1][j]), dp[i][j - 1]) + 1;
      }
    }
  }
  x = 0;
  t = 0;
  f(n, m);
  return 0;
}
