unittest
{
	assert( [ "?tc????", "coder" ].parse.expand.solve == "atcoder" );
	assert( [ "??p??d??", "abc" ].parse.expand.solve == "UNRESTORABLE" );
}



import std.conv;
import std.range;
import std.regex;
import std.stdio;
import std.string;
import std.typecons;

void main()
{
	stdin.byLineCopy.parse.expand.solve.writeln;
}

auto parse( Range )( Range input )
if( isInputRange!Range && is( ElementType!Range == string ) )
{
	auto s = input.front.strip.to!( char[] );
	input.popFront;
	auto t = input.front.strip;
	return tuple( s, t );
}

auto solve( char[] s, string t )
{
	// 正規表現で使えるように置換
	s = s.replace( "?", "." );
	
	// S内のTにマッチする個所を置換（複数個所マッチする場合を考慮して後ろから検索する）
	for( long i = s.length - t.length; 0 <= i; i-- )
	{
		auto re = matchFirst( t, s[ i .. i + t.length ] );
		if( !re.empty )
		{
			// マッチした
			s[ i .. i + t.length ] = t;
			s = s.replace( ".", "a" );
			return s.to!( string );
		}
	}
	
	// マッチしなかった
	return "UNRESTORABLE";
}
