#include using namespace std; #define rep(i, l, r) for (ll i = (l); i < (r); ++i) #define all(x) (x).begin(), (x).end() using ll = long long; using pl = pair; using vl = vector; using vvl = vector>; using vi = vector; using vvi = vector>; #pragma GCC target("avx2") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") vector> hbtoid={ {0,1,2,3,4,5}, {6,7,8,9,10}, {11,12,13,14}, {15,16,17}, {18}, {19} }; vector idtoh={0,0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,4,5}; vector idtob={0,1,2,3,4,5,0,1,2,3,4,0,1,2,3,0,1,2,0,0}; int hbsim(string a,string b){ int ih=0; rep(i,0,a.size())if(a[i]==b[i])ih++; a+=b; sort(all(a)); int ib=-ih; rep(i,0,a.size()-1)if(a[i]==a[i+1])ib++; return hbtoid[ih][ib]; } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); vector slis; string s="00000"; for(s[0]='0';s[0]<='9';s[0]++){ for(s[1]='0';s[1]<='9';s[1]++){ for(s[2]='0';s[2]<='9';s[2]++){ for(s[3]='0';s[3]<='9';s[3]++){ for(s[4]='0';s[4]<='9';s[4]++){ int a=0; rep(i,0,5){ rep(j,i+1,5)if(s[i]==s[j])a=1; } if(a==0)slis.push_back(s); } } } } } vector u(30240,true); int b=-1; while(true){ int a=0; if(b==-1){ rep(i,0,u.size()){ if(u[i]){ a=i; break; } } } else b=a; cout< d(20); rep(i,0,30){ int a,b; cin>>a>>b; if(a==-1&&b==-1)return 0; d[hbtoid[a][b]]++; } if(d[19]==30)break; vector e(20); vector f(20); rep(i,0,u.size()){ int id=hbsim(slis[i],slis[a]); if(d[id]==0)u[i]=false; if(u[i]){ e[id]++; f[id]=i; } } rep(i,0,20){ if(e[i]==1)b=f[i]; } } }