#include <bits/stdc++.h>
using namespace std;
char s[1000004], t[1000005];
int ss[30] = {0}, ts[30] = {0};
int ans = 0;
bool ju(int n) {
  int cnt = 0;
  for (int i = 0; i < 26; i++) {
    if (ts[i] * n > ss[i]) cnt += ts[i] * n - ss[i];
  }
  if (cnt <= ans) return true;
  return false;
}
char out[1000005];
void output(int n) {
  for (int i = 0; i < 26; i++) {
    ts[i] = ts[i] * n - ss[i];
    if (ts[i] < 0) ts[i] = 0;
  }
  int j = 0;
  for (int i = 0; s[i]; i++) {
    if (s[i] == '?') {
      while (!ts[j] && j < 26) j++;
      if (j == 26)
        printf("a");
      else {
        printf("%c", j + 'a');
        ts[j]--;
      }
    } else
      printf("%c", s[i]);
  }
  cout << endl;
}
int main() {
  cin >> s >> t;
  for (int i = 0; s[i]; i++) {
    if (s[i] == '?')
      ans++;
    else
      ss[s[i] - 'a']++;
  }
  for (int i = 0; t[i]; i++) {
    ts[t[i] - 'a']++;
  }
  int l = 0, r = strlen(s) / strlen(t);
  while (l <= r) {
    int mid = (l + r) / 2;
    if (ju(mid))
      l = mid + 1;
    else
      r = mid - 1;
  }
  output(r);
  return 0;
}
