import std.algorithm,
       std.string,
       std.range,
       std.stdio,
       std.conv;

bool chmin(T)(ref T a, T b) {
  if (b < a) {
    a = b;
    return true;
  } else {
    return false;
  }
}

void chChar(ref string base, size_t idx, char c) {
  char[] tmp = base.to!(char[]);
  tmp[idx] = c;
  base = cast(string)tmp;
}

void main() {
  string Sd = readln.chomp.to!(char[]);
  string T = readln.chomp.to!(char[]);
  string ans;

  foreach (i, s; Sd) {
    string tmp = Sd;
    bool match = true;
    foreach (j, t; T) {
      if (i + j >= Sd.length) {
        match = false;
        break;
      }
      if (Sd[i + j] == T[j] || Sd[i + j] == '?') {
        chChar(tmp, i + j, T[j]);
      } else {
        match = false;
        break;
      }
    }

    if (!match) {
      continue;
    }

    foreach (j, c; tmp) {
      if (c == '?') {
        chChar(tmp, j,  'a');
      }
    }
    if (ans.empty) {
      ans = tmp;
    } else {
      chmin(ans, tmp);
    }
  }

  if (ans.empty) {
    writeln("UNRESTORABLE");
  } else {
    writeln(ans);
  }
}
