"use strict"
const create = () => {
    const input = require("fs").readFileSync("/dev/stdin", "utf8").trim().split("\n");
    const res = {
        "list": input, "index": 0, "max": input.length,
        "hasNext": function () { return this.index < this.max },
        "next": function () { if (!this.hasNext()) { throw "ArrayIndexOutOfBoundsException"; } else { return this.list[this.index++]; } }
    };
    return res;
}
const o = create();
const next = () => o.next()
const nextInt = () => parseInt(o.next())
const nextStrArray = () => o.next().split(" ")
const nextIntArray = () => o.next().split(" ").map(el => parseInt(el))
const nextCharArray = () => o.next().split("")
const hasNext = () => o.hasNext()
const myout = (...x) => console.log(...x)
const Main = () => {
    const Sd = nextCharArray()
    const T = nextCharArray()
    const q = "?"
    let arr = []
    let pos = 0
    while (pos < Sd.length) {
        let tmp = [...Sd]
        for (let i = pos, j = 0; i < pos + T.length; i++, j++) {
            tmp[i] = T[j]
        }
        if (tmp.length == Sd.length) {
            let isValid = true
            for (let i = 0; i < Sd.length; i++) {
                if (Sd[i] !== q && tmp[i] !== Sd[i]) {
                    isValid = false
                    break
                }
            }
            if (isValid){
                arr.push(tmp)
            }
        }
        pos++
    }
    if(arr.length == 0){
        console.log("UNRESTORABLE")
        return
    }
    for(let str of arr){
        for(let i = 0; i<str.length;i++){
            if(str[i] == q) str[i] = "a"
        }
    }
    arr.sort()
    console.log(arr[0].join(""))
}
Main()