While evaluating the results, please note that the program has some limitations
I introduced with efficiency in mind.
First of all, intermediate results are integers with at most 18 digits.
This value should be sufficient for almost all the reasonable
alphametics and cryptarithms but can be easily exceed by using a chain of
multiplications or powers. So, bear in mind that if some very large numbers
are involved the results obtained can be completely random. In particular,
I do not computer powers with exponents greater than 20, so it is useless
to try equations like AB^DEF=YZZ^AAA. Moreover since the program only deals
with integer numbers (and not rational numbers) it is impossible to solve
problems like (1/A)+(1/B)=(1/C) since they involve fractional numbers.
In general, I consider valid a division only if the remainder is zero,
so, for example, the relation A/7=1 is satisfied only by A=7.
As in the last example, you can also use explicit digits in your
constraints, like B*OBAMA=1+5*GW*BUSH. In this case note that the
explicit digits (1 and 5 here) can be still assigned to letters in the
solution. If you want to avoid that, you can add a constraint like
X=5 where X is a letter not used in your cryptarithm and 5 is the value
you want to 'burn'.