in reply to mapping 10 -> 4 equally.

I may be misunderstanding, but if you're after something where, say, a, b & c = 1, d, e & f = 2, g, h & i = 3 and j = 4, then the approach I would use is to count them first and then apply a linear programming tool to get the closest match, bearing in mind that it may not be possible to match perfectly. However, if you have a more complicated system, where you want to map to hundreds of IDs, you run into the travelling salesman problem. Theoretically, LP can do it, but not before the heat death of the universe.

Update: Seeing your reply above, I had misunderstood. I, too, thought you wanted one number per letter. But if multiple numbers per letter are allowed, why not just allow the first 25% of all letters to be 1, the second to be 2 etc? I suspect you have stricter rules in mind. Could you be clearer about them, please?/update

Regards,

John Davies