Brainf*** subprograms with unique outputs You should write a 100-byte long brainfuck (BF) program.

One character will removed from it in every possible way the resulting 100 new (99-byte long) programs.  E.g. for the program ++.&gt;. the 5 subprograms are +.&gt;., +.&gt;., ++&gt;., ++.. and ++.&gt; .

Your score will be the number of unique outputs the 100 programs generate. Higher score is better.

Details


Your programs will be terminated after outputting the first character.
Invalid or non-terminating programs and programs generating empty outputs are not counted towards the score.
The BF cells are 8 bit wrapping ones. (255+1=0, 0-1=255)
Your program is given no input. If you use , in the code it set's the current cell to 0.
There are no cells on the left side of the starting position. E.g. &lt;. is invalid but .&lt; is valid as the execution is terminated at .. The tape is unbounded in the other direction.
Programs with unbalanced brackets ([ and ]) are invalid.
Your original program can be shorter than 100 bytes as it's easy to extend it to 100 bytes without changing the score.
Your original program doesn't have to be valid BF code.


You can use this python3 program (ideone link) to determine the score of your answer. (For long-running programs you may need to modify the maxstep variable.)

Example

(For simplicity this program is shorter than 100 bytes.)

Solution: ++,+[-]+&gt;&lt;.-,-.

Score: 3

Explanation:

Subprogram     =&gt; Output

+,+[-]+&gt;&lt;.-,-. =&gt; 1
+,+[-]+&gt;&lt;.-,-. =&gt; 1
+++[-]+&gt;&lt;.-,-. =&gt; 1
++,[-]+&gt;&lt;.-,-. =&gt; 1
++,+-]+&gt;&lt;.-,-. =&gt; None
++,+[]+&gt;&lt;.-,-. =&gt; None
++,+[-+&gt;&lt;.-,-. =&gt; None
++,+[-]&gt;&lt;.-,-. =&gt; 0
++,+[-]+&lt;.-,-. =&gt; None
++,+[-]+&gt;.-,-. =&gt; 0
++,+[-]+&gt;&lt;-,-. =&gt; 255
++,+[-]+&gt;&lt;.,-. =&gt; 1
++,+[-]+&gt;&lt;.--. =&gt; 1
++,+[-]+&gt;&lt;.-,. =&gt; 1
++,+[-]+&gt;&lt;.-,- =&gt; 1

Unique outputs are [0, 1, 255]    
Score is 3 for ++,+[-]+&gt;&lt;.-,-. (length = 15)


In case of a tie the winner is the one with the shorter code. (Your program can be shorter than 100 bytes as stated in the Details section.) If the codes are equal length the winner is the earlier poster.

Bonus puzzle: without the bolded restriction can you find a program with score 100?
Score: 35 41 69 78 79 83
(Remove the newline.)
--&gt;+&gt;-&gt;+&gt;-&gt;+&gt;-&gt;+&gt;-&gt;+&gt;-&gt;+&gt;-&gt;+&gt;-&gt;+&gt;-&gt;+&gt;-&gt;+&gt;-&gt;+&gt;-&gt;+&gt;-
&gt;+&gt;-&gt;+&gt;-&gt;+&gt;-&gt;+&gt;-&gt;+&gt;-&gt;+&gt;-&gt;+&gt;-&gt;+&gt;++[&gt;[-&lt;+++&gt;]&lt;&lt;++]&gt;.

Try it online!
I'm not sure exactly why it works...
Score: 79
X-&gt;&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;
+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+&gt;+[&gt;[-&lt;+&gt;&gt;+&lt;]+&gt;[-&lt;+&gt;]&lt;&lt;&lt;+]&gt;&gt;.

Try it online!
It was supposed to sum 2*mem[i]*i and add the number of cells (+const) where the addresses are counted from the right to the left. The multiplier 2 and number of cells can make removing + and &gt; having different parity.
It indeed worked like that in the 69 points version. But the latest version broke that and got something else by coincidence. It calculates sum(mem[i]*i+i+1) and removing + and &gt; does almost the same, except for the sum(i) which has a difference of the number of cells, which is also the number of different output for either removing + and &gt;.
For the bonus:

 +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.