Write a program that will output another distinct program, and so on, while using as few distinct characters (and as few bytes) as possible.
For example, program 1 should output program 2, and when program 2 is executed, it should output program 3. This can be nested as deeply as needed, but must be at least 3 distinct programs deep.
Your program can take no input.
When the program is executed, the output should be the source of another, different program. This includes the STDERR stream. This can continue as many times as needed, but must occur at least three times.
The output source code may be in a separate language.
$ <program-1> <program-2> $ <program-2> <program-3> $ <program-3> <empty>
Each answer is scored by the following formula:
(length_in_bytes * number_of_distinct_characters) / number_of_distinct_programs
For example, if your answer was 10 bytes long, contained 5 distinct characters, and output 3 distinct programs, your score would be:
(10 * 5) / 3
Lowest score wins.
Note: This challenge was inspired by the comments on this StackOverflow question.