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