#include <bits/stdc++.h>
using namespace std;
char s[1000006];
char t[1000006];
int a[50];
int b[50];
queue<char> plu;
int main() {
  scanf("%s", s);
  scanf("%s", t);
  int ls = strlen(s);
  int lt = strlen(t);
  for (int i = 0; i < ls; i++) {
    if (s[i] == '?') {
      a[0]++;
    } else {
      a[s[i] - 'a' + 1]++;
    }
  }
  for (int i = 0; i < lt; i++) {
    b[t[i] - 'a' + 1]++;
  }
  while (a[0] > 0) {
    for (int i = 1; i <= 26; i++) {
      if (a[i] >= b[i]) {
        a[i] -= b[i];
      } else {
        int gap = b[i] - a[i];
        while (gap--) {
          plu.push((char)(i - 1 + 'a'));
          a[0]--;
          if (a[0] <= 0) {
            break;
          }
        }
        if (a[0] <= 0) {
          break;
        }
        a[i] = 0;
      }
    }
  }
  for (int i = 0; i < ls; i++) {
    if (s[i] == '?') {
      s[i] = plu.front();
      plu.pop();
    }
  }
  printf("%s\n", s);
  return 0;
}
