#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 5;
char s[maxn], t[maxn];
int cnt[30], res[30];
int main(int argc, char const *argv[]) {
  scanf("%s", s);
  scanf("%s", t);
  int lena = strlen(s);
  int lenb = strlen(t);
  if (lena < lenb) {
    for (int i = 0; i < lena; i++) printf("%c", s[i] == '?' ? 'a' : s[i]);
    return 0;
  }
  long long tmp = 0;
  for (int i = 0; i < lena; i++)
    if (s[i] == '?')
      tmp++;
    else
      res[s[i] - 'a']++;
  for (int i = 0; i < lenb; i++) cnt[t[i] - 'a']++;
  int lb = 0, ub = 1e6, ans = 0;
  while (lb <= ub) {
    int mid = (lb + ub) >> 1;
    long long tt = tmp;
    bool flag = true;
    for (int i = 0; i < 26; i++) {
      long long req = 1ll * mid * cnt[i];
      if (res[i] >= req) continue;
      tt -= (req - res[i]);
      if (tt < 0) {
        flag = false;
        break;
      }
    }
    if (flag) {
      ans = mid;
      lb = mid + 1;
    } else
      ub = mid - 1;
  }
  std::vector<char> p;
  for (int i = 0; i < 26; i++) {
    long long req = ans * cnt[i];
    if (res[i] >= req) continue;
    for (int j = 0; j < req - res[i]; j++) p.push_back((char)(i + 'a'));
  }
  int q = 0;
  for (int i = 0; i < lena; i++) {
    if (s[i] != '?')
      printf("%c", s[i]);
    else {
      if (q < p.size()) {
        printf("%c", p[q]);
        q++;
      } else
        printf("a");
    }
  }
  return 0;
}
