You can [65, 66, 67] convert to 656667. Since you can recompute it back, it would be of same security level. However, I suppose this is not what you really want. I guess, you want the result with as little letters/digits as possible.
Consider the password as a n-base number where n is number of possible characters in the password. What you really want is to convert n-base number (password) to m-base number where m is number of character in the destination set. It's easy if you have just small numbers which can be held in the integer value. It's more difficult with larger numbers however, you would need just a middle school arithmetic.
For example, we have 26 letters a..z.
bcd = [1, 2, 3] would be 26-base number (letter a is 0). You can convert it to integer easily:
n = 1 + 26 * 2 + 26^2 *3
BASE = 26
res = 0
k = 1
for n in abc:
res += n*k
k *= BASE
return res
It's like 1234 = 1 * 10^3 + 2 * 10^2 + 3 * 10^1 + 4 ^ 10^0 just 10 would be 26 :-)
Then, you can convert it to 10-base (or whatever base) number:
BASE = 10
while(n):
out.append(n % BASE)
n=n/BASE
return n
As I mentioned, the problem could be a large number. You can implement it by yourself and it's not as difficult as it looks, just use the base division algorithm which you learned on your middle school or even earlier, or you can try to find some big-number python library which would be even easier.