#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
struct anss {
  int a, b;
  char c;
} stacks[1001];
int dp[1001][1001], i, i2, top, as, bs;
char a[1001], b[1001];
int main() {
  for (ios::sync_with_stdio(0), cin.tie(0), cin >> a >> b, i = -1;
       i < 0 || a[i] != '\0'; ++i, dp[i][0] = i)
    ;
  for (as = i, i = -1; i < 0 || b[i] != '\0'; ++i, dp[0][i] = i)
    ;
  for (bs = i, i = 0; i < as; i++)
    for (i2 = 0; i2 < bs; i2++)
      if (a[i] == b[i2])
        dp[i + 1][i2 + 1] = dp[i][i2];
      else
        dp[i + 1][i2 + 1] =
            min(dp[i][i2], min(dp[i + 1][i2], dp[i][i2 + 1])) + 1;
  for (i = as, i2 = bs; i > -1 || i2 > -1;)
    if (i > 0 && i2 > 0 && dp[i][i2] == dp[i - 1][i2 - 1] &&
        a[i - 1] == b[i2 - 1])
      i--, i2--;
    else if (i2 > 0 && dp[i][i2] == dp[i][i2 - 1] + 1)
      stacks[top++] = anss{i2, 0, b[i2 - 1]}, i2--;
    else if (i > 0 && dp[i][i2] == dp[i - 1][i2] + 1)
      stacks[top++] = anss{i2 + 1, 1, 0}, i--;
    else
      stacks[top++] = anss{i2, 2, b[i2 - 1]}, i--, i2--;
  for (cout << top - 1 << '\n', i = top - 2; i > -1; i--)
    if (stacks[i].b == 0)
      cout << "INSERT " << stacks[i].a << ' ' << stacks[i].c << '\n';
    else if (stacks[i].b == 1)
      cout << "DELETE " << stacks[i].a << '\n';
    else
      cout << "REPLACE " << stacks[i].a << ' ' << stacks[i].c << '\n';
}
