#include <bits/stdc++.h>
using namespace std;
string s, t;
int dp[1005][1005];
int solve(int i, int j) {
  if (i == s.size()) return t.size() - j;
  if (j == t.size()) return s.size() - i;
  if (dp[i][j] != -1) return dp[i][j];
  if (s[i] == t[j]) return solve(i + 1, j + 1);
  int c1 = solve(i + 1, j + 1) + 1;
  int c2 = solve(i, j + 1) + 1;
  int c3 = solve(i + 1, j) + 1;
  return dp[i][j] = (min(c1, min(c2, c3)));
}
int shft1 = 0;
void print(int i, int j) {
  if (i == s.size()) {
    for (int xx = j; xx < t.size(); xx++) {
      cout << "INSERT " << 1 + xx << " " << t[xx] << endl;
    }
    return;
  }
  if (j == t.size()) {
    for (int xx = 0; xx < s.size() - i; xx++) {
      cout << "DELETE " << j + 1 << endl;
    }
    return;
  }
  int c = -2;
  if (s[i] == t[j]) {
    return print(i + 1, j + 1);
  }
  int c1 = solve(i + 1, j + 1) + 1;
  int c2 = solve(i, j + 1) + 1;
  int c3 = solve(i + 1, j) + 1;
  int optimal = solve(i, j);
  if (optimal == c1) {
    cout << "REPLACE " << j + 1 << " " << t[j] << endl;
    print(i + 1, j + 1);
  } else if (optimal == c2) {
    cout << "INSERT " << j + 1 << " " << t[j] << endl;
    shft1++;
    print(i, j + 1);
  } else if (optimal == c3) {
    cout << "DELETE " << j + 1 << " " << endl;
    shft1--;
    print(i + 1, j);
  }
}
int main() {
  cin >> s >> t;
  memset(dp, -1, sizeof dp);
  cout << solve(0, 0) << endl;
  print(0, 0);
  return 0;
}
