#include <bits/stdc++.h>
using namespace std;
char s[1000100];
char t[1000100];
int main(void) {
  scanf("%s", s);
  scanf("%s", t);
  int sl = strlen(s);
  int tl = strlen(t);
  vector<long long int> sf(26), tf(26);
  long long int que = 0;
  for (int i = (int)(0); i < (int)(sl); i++) {
    if (s[i] == '?')
      que += 1;
    else
      sf[s[i] - 'a'] += 1;
  }
  for (int i = (int)(0); i < (int)(tl); i++) {
    tf[t[i] - 'a'] += 1;
  }
  long long int pass = 0, fail = sl / tl + 1;
  while (fail - pass > 1) {
    long long int mid = (fail + pass) / 2;
    long long int sh = 0;
    for (int i = (int)(0); i < (int)(26); i++) {
      if (sf[i] < mid * tf[i]) {
        sh += mid * tf[i] - sf[i];
      }
    }
    if (sh <= que) {
      pass = mid;
    } else {
      fail = mid;
    }
  }
  vector<long long int> rem(26);
  for (int i = (int)(0); i < (int)(26); i++) {
    rem[i] = max(0LL, pass * tf[i] - sf[i]);
  }
  int pos = 0;
  for (int i = (int)(0); i < (int)(sl); i++) {
    if (s[i] != '?') {
      continue;
    }
    while (pos < 26 && rem[pos] <= 0) pos++;
    s[i] = pos < 26 ? 'a' + pos : 'x';
    if (pos < 26) {
      rem[pos]--;
    }
  }
  puts(s);
}
