#include <bits/stdc++.h>
using namespace std;
string s, t;
int a0 = 0, a1 = 0, n = 0;
vector<int> used(222222);
vector<string> ans;
void play(string p) {
  used.assign(222222, 0);
  int j1 = 0, j2 = 0;
  for (int i = 0; i < p.size() - 2; i++) {
    if (i % 2 == 0) {
      int flag = 0;
      for (; j1 < p.size(); j1++) {
        if (p[j1] == '1' && !used[j1]) {
          used[j1] = 1;
          flag = 1;
          break;
        }
      }
      if (!flag) {
        for (int j = 0; j < p.size(); j++) {
          if (!used[j]) {
            used[j] = 1;
            break;
          }
        }
      }
    } else {
      int flag = 0;
      for (; j2 < p.size(); j2++) {
        if (p[j2] == '0' && !used[j2]) {
          used[j2] = 1;
          flag = 1;
          break;
        }
      }
      if (!flag) {
        for (int j = 0; j < p.size(); j++) {
          if (!used[j]) {
            used[j] = 1;
            break;
          }
        }
      }
    }
  }
  string res;
  for (int i = 0; i < p.size(); i++) {
    if (!used[i]) {
      res.push_back(p[i]);
    }
  }
  ans.push_back(res);
}
string gets(int x, int m) {
  string t = s;
  for (int i = 0; i < s.size(); i++) {
    if (s[i] != '?') {
      t[i] = s[i];
      continue;
    }
    if (x) {
      t[i] = m + '0';
      x--;
    } else {
      t[i] = m ^ 1 + '0';
    }
  }
  return t;
}
int main() {
  cin >> s;
  for (int i = 0; i < s.size(); i++) {
    if (s[i] == '0') a0++;
    if (s[i] == '1') a1++;
    if (s[i] == '?') n++;
  }
  if (a0 + n > a1) {
    ans.push_back("00");
  }
  if (a1 + n > a0 + 1) {
    ans.push_back("11");
  }
  int a = 0, b = 0;
  for (int i = 0; i <= n; i++) {
    if (a0 + i == a1 + n - i) {
      play(gets(i, 0));
      play(gets(n - i, 1));
    }
    if (a0 + i + 1 == a1 + n - i) {
      play(gets(i, 0));
      play(gets(n - i, 1));
    }
  }
  sort(ans.begin(), ans.end());
  set<string> st;
  for (int i = 0; i < ans.size(); i++) {
    st.insert(ans[i]);
  }
  for (set<string>::iterator it = st.begin(); it != st.end(); it++)
    cout << *(it) << endl;
  return 0;
}
