In versions 10+, there is [`FindTransientRepeat`](http://reference.wolfram.com/language/ref/FindTransientRepeat.html): > - _FindTransientRepeat[list, n] returns a pair of lists {transient,repeat} where the elements of repeat occur successively at least n times at the end of list._ > - _FindTransientRepeat accepts an incomplete copy of the repeated sublist in the last position_ > - _The minimum number of repetitions refers to complete repetitions_ For the examples in the posted question lists = {{19, 6, 19, 6, 19, 6, 19, 6, 19, 6, 19, 6}, {73, 7, 4, 73, 7, 4, 73, 7, 4, 73, 7, 4, 73, 7}, {73, 7, 4, 7, 2, 6, 7, 2, 7, 73, 9, 17, 7, 7}}; we get FindTransientRepeat[#, 2]& /@ lists > {{{}, {19, 6}}, {{}, {73, 7, 4}}, {{73, 7, 4, 7, 2, 6, 7, 2, 7, 73, 9, 17}, {7}}} We can define a function that processes the output of `FindTransientRepeat` to get the results in desired form: Clearall[repeatsF] repeatsF = Module[{ftr = FindTransientRepeat[#, 2], lst = #}, If[First @ ftr === {}, {Length @ Last @ ftr, Last @ ftr}, {Length @ lst, lst}]]&; repeatsF /@ lists > {{2, {19, 6}}, {3, {73, 7, 4}}, {14, {73, 7, 4, 7, 2, 6, 7, 2, 7, 73, 9, 17, 7, 7}}}