• Always love a puzzle 🙂 so here's my solution. I'm not sure if my grouping method will work further down the line, however it seems to work for 10 iterations. There is probably a better way of doing this.

    I have made use of the delimitedSplit8k function ... http://www.sqlservercentral.com/articles/Tally+Table/72993/

    declare @s-2 varchar(4000) = '1'

    declare @iterations int = 10

    declare @i int = 1

    print cast(@i as varchar(10)) + ': ' + @s-2

    while @i <= @iterations

    begin

    select @s-2 =

    ltrim(

    (

    select ' ' + cast(count(*) as varchar(10)) + ' ' + item as [text()]

    from (

    select itemnumber, item, itemnumber - rank() over (partition by item order by itemnumber) g

    from dbo.delimitedSplit8k(@s,' ')

    ) a

    group by item, g

    order by min(itemnumber)

    FOR XML PATH (''), TYPE).value('text()[1]', 'varchar(8000)')

    )

    --select itemnumber, item, itemnumber - row_number() over (order by item) g

    --from dbo.delimitedSplit8k(@s,' ')

    set @i += 1

    print cast(@i as varchar(10)) + ': ' + @s-2

    end