Cut resistance of a list
J, 20 bytes

1-~&amp;#(#~2=/\_&amp;,)^:a:


Try it online!

Using the 0 0 0 1 1 0 3 3 3 2 2 example:


(......_&amp;,) Prepend infinity _:

_ 0 0 0 1 1 0 3 3 3 2 2

(..2=/....) Are consecutive pairs equal? Returns 0-1 list of same length as input:

_ 0 0 0 1 1 0 3 3 3 2 2  &lt;-- Before
 0 1 1 0 1 0 0 1 1 0 1   &lt;-- After

(#~.......) Apply the above mask as a filter to the input.  This drops the first member of every group:

0 0 1 3 3 2

^:a: Repeat until we reach a fixed point, returning all intermediate results (0-padded on the right):

0 0 0 1 1 0 3 3 3 2 2
0 0 1 3 3 2 0 0 0 0 0
0 3 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0

1-~&amp;# Subtract 1 from 1-~ the above result, after applying the "length of" verb to both lists &amp;#.  Since the length of 1 is 1, it remains unchanged, while the result above becomes 4:

4 - 1
3