src = input()
dst = src
# 가능한 step수들을 탐색
for step in range(1, len(src)//2+1):
# 비교하기전에 넣어둘 list 선언
tmp = ''
# step 만큼 이동하며 문자열 압축이가능한지확인
i = 0
while i < len(src):
# 압축이 가능할 경우
if src[i:i+step] == src[i+step:i+2*step]:
compress = 2
# 다음스텝으로
i = i + step
# compress 가능한 문자열 체크
for j in range(i, len(src), step):
if src[j:j+step] == src[j+step:j+2*step]:
# 있다면 숫자를 추가한뒤에 다음스텝으로
compress = compress + 1
i = i + step
else:
# 없다면 중지
break
# 문자열 연산을통해 문자열 생성
tmp = tmp + str(compress) + src[j:j+step]
# 다음스텝으로
i = i + step
# 압축이 불가할경우
else:
# step 만큼 list에 넣고 다음 step으로 이동
tmp = tmp + src[i:i+step]
i = i + step
# 압축이완료될경우 기존의 압축과 압축률비교a
if len(tmp) < len(dst):
# 압축률이 좋을경우 대체
dst = tmp
print(dst)