Pattern Matching Order

The task is to produce clumped/2 without the count - and (preferably) able to handle non-ground variables - which my code does at Logically pure/impure predicate implementations in the std lib - #21 by brebs

Example:

?- clumped2([a,b,X,d], L).
L = [a-1, b-1, X-1, d-1],
dif(X, b),
dif(X, d) ;
X = d,
L = [a-1, b-1, d-2] ;
X = b,
L = [a-1, b-2, d-1].