# Python: 1980 bytes, score=1200 Here's my submission: import sys S=str.split b=S('eJxlVmvSJCkIvBd9GsXntIojWD3eftP+Zv/sVkRHGYqQJCTVr5eM6IJ3zC67Uir9fd667L5P/xCpDUr4Hd9fbsV4TNi8ebWv/aeyT0Q9htyI4yyJwujTE9Xyq2Xap/whf0IeNMduhcKnYW1TRyG/z7JXdG7VJtya2GqbKPg2LNMMfagheFAulJ53H5PCUisfmlra6qTDQluktbwTcZcxAwLUNwwLQjCgf9iHN03TNQI28fJU4be8v4HXEmtVrSFlLi3k9KHcGKEPjclZzRPCT9uBPE6HdRLcfnhTm1aEK7Va7CNMlVMTBYJxcu1MlkQ3B+JaxjQhK2nMjwLF5ga7WnLStam2AZD5tZxZrS3GIcO5Slo6+9wmSSqba2/URuh8qqckoTb2nWJWCZY2RVMOMwkWSLzvQVG38cCtqI6bPBSLusY5UGygxr8nFtvLUIoTQEf3JHGwng534Rm4lr+XZYRXHS6uZiag0FhpOZ6ai5DLbYGvosS2XE6lK2UHTG1thmfeoi4g+tPgKmwgDNPgdCMf9F+3jPLGsTnbCYmiDDvsC9AtHmUK4PXFAog4W2iiCe5EV5x9H2zNFXD5dh9wpjVfw9VozZahUIzrVjPqwrNTNSDVkqVRlYtaPRqucm95FZlYxb1QmlSoRg28Tr+AFteQ5wbbleUJoBRc8AlPV6Ccy2/HKrQiWtVJnw9pXDK3BYe8ebnZbiha20VUPgP12tMF9Dwyl97mOvxCbViW1BgrWF7oWehTV4e1yR7L50ut1dFVfF4BwG0cv1RQr1FtZVTk7o6wLHe+2AZWequzv+s+85fFOraGNi97YWjdM+MWOmj3WwDIYTx/LjERClwzF5prYPsJUHSsw2aAKQQfr5KeFzsR0LauyqZrX18d/rX4ixeLGPqFG9tY6kHkLZAm5IQ6jDjbDj7dJpA6ITK9HmSjhaDnKDflNp/zh6JDnrqPn89F7CzeujzIHoSb+wYZhuJk1HCDbxhAXf50cFHtkthnKOSeCEd+nUsL7uW+6nwxqGzS3J49LkwXHNWGWZagfY1AERDrXBBWMQ4RgtzNaY6TUBkxB9joSR8gBnEgJ+Rtb/3cQkWHDi7AeilzktOOv7GG5qHwx58v8LUxRhOwAlMd9+CQ87UhjTL2T8YyT0BXOjRbqn1AAsCTZcV62zZWJ7fo89WWsotOJVbZPd4TdEuQPO25uEHcgdsOBQP2VINyN9wGEDOmHmKkKdj7PLdIrLbRMGxx6MmYSPNy9xszBmKVH/Q8n54x7gBop7JyvxeNV/C/EATLxTl1whY0BfR7/ujXGMkW4gQ+MIYhTUhnoMjnxdpml+7SuqMKM1NiMbRIG/fqWKFCFd+EQMKvJpcOJAw/oWF3oANyElB4AdjYoV2DXAvQfDGt20PoFWCOdZ2k1xc2Rz9hPn+uY7VYvqMGMY7DuOmwCRdrVDjDu6q/Ey5jbztfMHe+QeSrjg7Nc3ATM97FJ1zuZXxjX/Kup4vi61ENbDz0s3e/wu7fd/q7iHdhN/WpC8flx6rdUPcrUO8+zmEFXpXIx3t4N0Gm8967+PO4N/3ngQ4SiIHp5/XyLtz/BdcS7/Q/W474IAn4/QddskwG'.decode('base64').decode('zlib'),';') L=len R=raw_input def G(c):print c;sys.stdout.flush();return R() def P(w): if w=='END':exit() d=S(b[L(w)],':');v=d.pop(0);p=f=0 for i in range(4): x=G(v[p]);r=w==x;w=x;f+=r;p+=p+1+r if'_' not in x:return for c in d[p-L(v)]+'zj'*6: x=G(c);r=w==x;w=x;f+=r if'_' not in x or f==6:break while 1:P(R()) Scored output: score is 1200, totalerr is 21638 It's fully deterministic, and pretty well golfed. This 187-byte skeleton should make a good starting point for golfed Python submissions: import sys R=raw_input def G(c):print c;sys.stdout.flush();return R() def P(w): if w=='END':exit() f=0 for c in <guesses>: x=G(c);r=w==x;w=x;f+=r if'_'not in x or f==6:break while 1:P(R()) ### How it works How this works is left as an exercise to the reader, for the time being.