Language: C

//written by libra9z
#define LOCAL_TIME
#include <bits/stdc++.h>
using namespace std;
#define Debug(x) cerr << #x << " = " << x << endl
#define Debug22(x,y) cerr<<#x<<" = "<<x<<" , "<<#y<<" = "<<y<<endl;
#define Debug2(x, y) cerr << "(" << #x << ", " << #y << ") = (" << x << ", " << y << ")\n";
#define Debug3(x,y,z) cerr<<"("<<#x<<", "<<#y<<", "<<#z<<") = ("<<x<<", "<<y<<", "<<z<<")\n";
#define Debug_arr(v,n) for(int i=0;i<n;++i) cerr<<#v<<"["<<i<<"]"<<" = "<<v[i]<<endl;
#define SET(p,v) fill((__typeof(**p)*)p,(__typeof(**p)*)p+sizeof(p),v);
#define eprintf(...) fprintf(stderr, __VA_ARGS__),fflush(stderr)
#define prl cerr << "called: " << __LINE__ << endl
#define all(s) s.begin(),s.end()
struct fastusualread
{
	inline int readint()
	{
		char c;
		while (c=getchar(),(c<'0'||c>'9') && c!='-');
		bool flag=(c=='-');
		if (flag)
		{
			c=getchar();
		}
		int x=0;
		while (c>='0' && c<='9')
		{
			x=x*10+c-48;
			c=getchar();
		}
		return flag?-x:x;
	}
	inline long long readllint()
	{
		char c;
		while (c=getchar(),(c<'0'||c>'9') && c!='-');
		bool flag=(c=='-');
		if (flag)
		{
			c=getchar();
		}
		long long x=0;
		while (c>='0' && c<='9')
		{
			x=(long long)x*10+c-48;
			c=getchar();
		}
		return flag?-x:x;
	}
	inline string readstring()
	{
		char c;
		while (c=getchar(),(c==' ' || c=='\n'));
		string s="";
		while (c!=' ' && c!='\n')
		{
			s+=c;
			c=getchar();
		}
		return s;
	}
	inline string readlinestring()
	{
		char c;
		while (c=getchar(),(c=='\n'));
		string s="";
		while (c!='\n')
		{
			s+=c;
			c=getchar();
		}
		return s;
	}
}fastread;
struct fastusualprint
{
	inline void printnum(int x)
	{
		if (x<0)
		{
			putchar('-'),x=-x;
		}
		register short a[10]={},sz=0;
		while (x)
		{
			a[sz++]=x%10;
			x/=10;
		}
		if (sz==0)
		{
			putchar('0');
		}
		for (int i=sz-1;i>=0;i--)
		{
			putchar('0'+a[i]);
		}
	}
	inline void printnum(long long x)
	{
		if (x<0LL)
		{
			putchar('-'),x=-x;
		}
		register short a[20]={},sz=0;
		while (x)
		{
			a[sz++]=x%10;
			x/=10;
		}
		if (sz==0)
		{
			putchar('0');
		}
		for (int i=sz-1;i>=0;i--)
		{
			putchar('0'+a[i]);
		}
	}
	inline void printstring(string s)
	{
		for (auto x:s)
		{
			putchar(x);
		}
	}
	inline void printnumln(int x)
	{
		if (x<0)
		{
			putchar('-'),x=-x;
		}
		register short a[10]={},sz=0;
		while (x)
		{
			a[sz++]=x%10;
			x/=10;
		}
		if (sz==0)
		{
			putchar('0');
		}
		for (int i=sz-1;i>=0;i--)
		{
			putchar('0'+a[i]);
		}
		putchar('\n');
	}
	inline void printnumln(long long x)
	{
		if (x<0LL)
		{
			putchar('-'),x=-x;
		}
		register short a[20]={},sz=0;
		while (x)
		{
			a[sz++]=x%10;
			x/=10;
		}
		if (sz==0)
		{
			putchar('0');
		}
		for (int i=sz-1;i>=0;i--)
		{
			putchar('0'+a[i]);
		}
		putchar('\n');
	}
	inline void printstringln(string s)
	{
		for (auto x:s)
		{
			putchar(x);
		}
		putchar('\n');
	}
}fastprint;
#define getnum(x) x=fastread.readint()
#define putnum(x) fastprint.printnum(x)
#define getstr(x) x=fastread.readstring()
#define getlinestr(x) x=fastread.readlinestring()
#define putstr(x) fastprint.printstring(x)
#define putnumln(x) fastprint.printnumln(x)
#define putstrln(x) fastprint.printstringln(x)
inline bool same(string a,string b){
	if(a.size()!=b.size()) return false;
	for(int i=0;i<a.size();++i) if(a[i]!=b[i] && a[i]!='?' && b[i]!='?') return false;
	return true;
}
string s,t;
int main()
{
	getstr(s);
	getstr(t);
	for (int i=0;i+t.size()<=s.size();++i)
	{
		if (same(s.substr(i,t.size()),t))
		{
			for (int j=i;j-i<t.size();++j)
			{
				s[j]=t[j-i];
			}
			for (auto &x:s) if (x=='?') x='a';
			cout<<s<<endl;
			#ifdef LOCAL_TIME
			eprintf("\n\nSystem Time : %d ms",clock());
			#endif
			return 0;
		}
	}
	puts("UNRESTORABLE");
	#ifdef LOCAL_TIME
	eprintf("\n\nSystem Time : %d ms",clock());
	#endif
	return 0;
}


Compiler output:
main.c:3:10: fatal error: bits/stdc++.h: No such file or directory
    3 | #include <bits/stdc++.h>
      |          ^~~~~~~~~~~~~~~
compilation terminated.