// inputに入力データ全体が入る
function Main(input) {
	// 1行目がinput[0], 2行目がinput[1], …に入る 
        ////console.log("***input = " + input);
        ////console.log("type = " + typeof(input));
        ////console.log("size=" + input.length);
	input = input.split("\n");
        ////console.log("***input.split = " + input);
        ////console.log("type = " + typeof(input));
        ////console.log("size=" + input.length);
	//文字列から10進数に変換するときはparseIntを使います

	var S = input[0];
	var T = input[1];
	//console.log("S=%s", S);
	//console.log("T=%s", T);
	
	//S'のある連続した|T|文字のX'を求める
	if(S.length < T.length){
		console.log("UNRESTORABLE");
		return;
	}
	for(var i=S.length-T.length;i>=0;i--) {
		var flag_UNRESTORABLE = 0;
		var answer = S;
		var X = S.substr(i,T.length);
		//console.log("X=" + X);
		for(var j=0;j<X.length;j++){
		        //console.log("X(%d)=%s",j,X.substr(j,1));
			if(X.substr(j,1) === T.substr(j,1)){
				//console.log(">correct");
				//console.log("answer=%s", answer);
			}else if (X.substr(j,1)==="?"){
				//console.log(">?");
				i//console.log("answer=%s,%s,%s,%s", answer.substr(0,i+j), T.substr(j,1), X.substr(j+1), answer.substr(i+X.length));
				answer = answer.substr(0,i+j) + T.substr(j,1) + X.substr(j+1) + answer.substr(i+X.length);
			}else{
				//console.log(">incorrect");
				flag_UNRESTORABLE = 1;
			}
			//console.log("ANSWER=%s", answer)
		}
		if(flag_UNRESTORABLE === 0){
			//console.log("OK!!");
			answer = answer.replace(/\?/g, "a");
			console.log("%s", answer)
			return;
		}
	}
	console.log("UNRESTORABLE");


	//X'とTを一文字ずつ比較する
	//X'とTを一致させることができれば、OK
	//X'とTを一致させることができなければ、NG

}
//*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
Main(require("fs").readFileSync("/dev/stdin", "utf8"));