#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 9, M = 2e9, OO = 0x3f3f3f3f;
const long long int MOD = 1000000007;
const double PI = acos(-1);
string s, t;
int n, m, dp[1002][1002];
int solve(int i, int j) {
  if (i == n) return m - j;
  if (j == m) return n - i;
  int &ret = dp[i][j];
  if (~ret) return ret;
  ret = OO;
  if (s[i] == t[j]) ret = solve(i + 1, j + 1);
  return ret = min({ret, 1 + solve(i + 1, j + 1), 1 + solve(i + 1, j),
                    1 + solve(i, j + 1)});
}
void print(int i, int j, int cnt) {
  if (i == n) {
    for (int k = int(j); k <= int(m - 1); k++) {
      cout << "INSERT " << cnt++ << ' ' << t[k] << '\n';
    }
    i = m - j;
    return;
  }
  if (j == m) {
    for (int k = int(i); k <= int(n - 1); k++) {
      cout << "DELETE " << cnt << '\n';
    }
    j = n - i;
    return;
  }
  int opt = solve(i, j);
  if (s[i] == t[j]) {
    print(i + 1, j + 1, cnt + 1);
  } else if (opt == 1 + solve(i + 1, j)) {
    cout << "DELETE " << cnt << '\n';
    print(i + 1, j, cnt);
  } else if (opt == 1 + solve(i, j + 1)) {
    cout << "INSERT " << cnt << ' ' << t[j] << '\n';
    print(i, j + 1, cnt + 1);
  } else if (opt == 1 + solve(i + 1, j + 1)) {
    cout << "REPLACE " << cnt << ' ' << t[j] << '\n';
    print(i + 1, j + 1, cnt + 1);
  }
}
int main() {
  cin >> s >> t;
  n = s.size();
  m = t.size();
  memset(dp, -1, sizeof dp);
  cout << solve(0, 0) << '\n';
  print(0, 0, 1);
}
