character(len=100000)::str integer,parameter::zero=ICHAR('0'),nine=ICHAR('9') integer::digits(zero:nine),i,total=1 data digits/10*0/ read *, str do i=1,LEN_TRIM(str) digits(ICHAR(str(i:i))) = digits(ICHAR(str(i:i))) + 1 end do do i=nine, zero, -1 if(digits(i).eq.0) cycle str(total:total+digits(i)-1)=REPEAT(CHAR(i),digits(i)) total = total + digits(i) end do print '(a)', TRIM(str) end program