Regarding generating the hash, the method is quite simple – basically it’s just running a genetic algorithm where the fitness function is a measure of the distance between the hash of an evolving text and a hash of the target text. I expect that if the fitness function would calculate the edit distance then it could find a string for which the edit distance between h1 and h3 would be less than the edit distance between h1 and h2

**Update:** Out of curiosity, I ran the process to generate a string for which the *edit distance* (using Levenshtein distance) of h1,h2 would be smaller than the edit distance for h1,h3. This proved to be more challenging and (at least for the little time I let it run) the genetic algorithm could not get bellow the edit distance of h1,h2. Having said that, I’m quite certain that with more a more refined algorithm and some time it is achievable.

However, I would like to know how did you generate h3

]]>I also assume you mean some modification based on Pearson hash where the hash size is larger than one byte (as it is in the original implementation).

]]>//20. Pamela and her husband borrowed the book that Mr and Mrs Zajac brought.

for (int book = 0; book<nElements; book++){

model.ifOnlyIf(model.arithm(x[WIFE][PAMELA], "=", x[BORROWED][book]), model.arithm(x[SURNAME][ZAJAC], "=", x[LENT][book]));

}