#include <bits/stdc++.h>
using namespace std;
int main() {
  string s;
  int k;
  cin >> s >> k;
  int c = 0, b = 0;
  for (int i = 0; i < s.size(); i++) {
    if (s[i] == '*')
      b++;
    else if (s[i] == '?')
      c++;
  }
  if (s.size() - 2 * b - 2 * c > k) {
    cout << "Impossible";
    return 0;
  }
  if (b == 0 && s.size() - c < k) {
    cout << "Impossible";
    return 0;
  }
  if (s.size() - 2 * b - 2 * c == k) {
    int i = 0;
    while (i < s.size()) {
      if (s[i] == '?' || s[i] == '*') {
        s.erase(s.begin() + i - 1, s.begin() + i + 1);
        i--;
      } else
        i++;
    }
    cout << s;
    return 0;
  }
  if (b == 0) {
    int t = s.size() - c - k;
    int i = 0;
    while (i < s.size() && t > 0) {
      if (s[i] == '?') {
        s.erase(s.begin() + i - 1, s.begin() + i + 1);
        i--;
        t--;
      } else
        i++;
    }
    i = 0;
    while (i < s.size()) {
      if (s[i] == '?') {
        s.erase(s.begin() + i);
      } else
        i++;
    }
    cout << s;
    return 0;
  } else {
    int i = 0;
    while (i < s.size()) {
      if (s[i] == '?') {
        s.erase(s.begin() + i - 1, s.begin() + i + 1);
        i--;
      } else
        i++;
    }
    int p = k - s.size() + b;
    if (p < 0) {
      i = 0;
      while (i < s.size() && p < 0) {
        if (s[i] == '*') {
          s.erase(s.begin() + i - 1, s.begin() + i + 1);
          i--;
          p++;
        } else
          i++;
      }
    } else {
      i = 0;
      while (i < s.size()) {
        if (s[i] == '*') {
          s.erase(s.begin() + i);
          s.insert(s.begin() + i, p, s[i - 1]);
          break;
        } else
          i++;
      }
    }
    i = 0;
    while (i < s.size()) {
      if (s[i] == '*')
        s.erase(s.begin() + i);
      else
        i++;
    }
    cout << s;
  }
  return 0;
}
