start_time = datetime.now()
        bob_key, bob_index = b.solve_random_puzzle_v2(alice_pre_puzzle_keys, alice_enc_secret_keys)
        bob_time = datetime.now() - start_time

        start_time = datetime.now()

        # Eve pre compute all puzzle keys
        puzzle_keys = []
        for ppk in alice_pre_puzzle_keys:
            p = Puzzle(None, ppk, None, None)
            puzzle_keys.append(p.pk)

        # Eve try to break each encrypted key she captured
        for key in alice_enc_secret_keys:
            e = UserPuzzle(puzzle_size)
            eve_key, eve_index = e.break_random_puzzle_v2(puzzle_keys, key)

            # Eve stop when a key matching bob's one is found
            if eve_key == bob_key:
                print "Key   :\t\t%s" % hexlify(eve_key)
                print "Index :\t\t%d" % eve_index

                eve_time = datetime.now() - start_time
                times[puzzle_size] += eve_time
                print "\nAlice time :\t%s" % alice_time
                print "Bob time :\t%s" % bob_time
                print "Eve time :\t%s" % eve_time
                print "----" * 20
                break

# combined total times (used to calculate average time)