#include <bits/stdc++.h>
using namespace std;
char s[100005];
int C0, C1, Cu, L;
inline void Check_01() {
  if (C1 + Cu - C0 == 0 || C1 + Cu - C0 == 1)
    if ((s[L] != '0') && C0 > 0) {
      printf("01\n");
      return;
    }
  if (C1 - Cu - C0 == 0 || C1 - Cu - C0 == 1)
    if ((s[L] == '1') && (Cu + C0 > 0)) {
      printf("01\n");
      return;
    }
  if ((C1 >= C0 && Cu - C1 + C0 > 0) || (C1 < C0 && Cu - C0 + C1 > -1))
    if ((s[L] != '0') && (Cu + C0 > 1)) {
      printf("01\n");
      return;
    }
}
inline void Check_10() {
  if (C1 - C0 - Cu == 0 || C1 - C0 - Cu == 1)
    if ((s[L] != '1') && (C1 > 0)) {
      printf("10\n");
      return;
    }
  if (Cu + C1 - C0 == 0 || Cu + C1 - C0 == 1)
    if ((s[L] == '0') && (Cu + C1 > 0)) {
      printf("10\n");
      return;
    }
  if ((C0 >= C1 && Cu - C0 + C1 > 1) || (C0 < C1 && Cu - C1 + C0 > -1))
    if ((s[L] != '1') && (Cu + C1 > 1)) {
      printf("10\n");
      return;
    }
}
int main() {
  int i;
  scanf("%s", s + 1);
  L = strlen(s + 1);
  for (i = 1; i <= L; ++i)
    if (s[i] == '?')
      ++Cu;
    else if (s[i] == '0')
      ++C0;
    else
      ++C1;
  if (C0 + Cu > C1) printf("00\n");
  Check_01();
  Check_10();
  if (C1 + Cu - C0 > 1) printf("11\n");
  return 0;
}
