#include <bits/stdc++.h>
using namespace std;
const long long modm = 1e9 + 7;
template <typename T>
void read_array(vector<T> &arr, int start, int end) {
  for (int i = start; i <= end; i++) cin >> arr[i];
}
template <typename T>
void print_array(vector<T> &arr, int start, int end) {
  for (int i = start; i <= end; i++) cout << arr[i] << " ";
  cout << "\n";
}
long long powm(long long x, long long y, long long p) {
  long long ret = 1;
  x = x % p;
  while (y > 0) {
    if (y & 1) ret = (ret * x) % p;
    y = y >> 1;
    x = (x * x) % p;
  }
  return ret;
}
long long powl(long long x, long long y) {
  long long ret = 1;
  while (y > 0) {
    if (y & 1) ret = (ret * x);
    y = y >> 1;
    x = (x * x);
  }
  return ret;
}
static inline void ltrim(std::string &s) {
  s.erase(s.begin(), std::find_if(s.begin(), s.end(),
                                  [](int ch) { return !std::isspace(ch); }));
}
static inline void rtrim(std::string &s) {
  s.erase(std::find_if(s.rbegin(), s.rend(),
                       [](int ch) { return !std::isspace(ch); })
              .base(),
          s.end());
}
static inline void trim(std::string &s) {
  ltrim(s);
  rtrim(s);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  vector<int> dig;
  int x, y;
  for (int i = 0; i <= 9; i++) {
    printf("%d%d%d%d\n", i, i, i, i);
    fflush(stdout);
    cin >> x >> y;
    if (x > 0) dig.push_back(i);
  }
  for (int i = 0; i < 4; i++)
    for (int j = 0; j < 4; j++)
      for (int k = 0; k < 4; k++)
        for (int l = 0; l < 4; l++) {
          unordered_set<int> s = {i, j, k, l};
          if (s.size() == 4) {
            printf("%d%d%d%d\n", dig[i], dig[j], dig[k], dig[l]);
            fflush(stdout);
            cin >> x >> y;
            if (x == 4) return 0;
          }
        }
}
