George is a cat, so he really likes to play. Most of all he likes to play with his array of positive integers *b*. During the game, George modifies the array by using special changes. Let's mark George's current array as *b*<sub class="lower-index">1</sub>, *b*<sub class="lower-index">2</sub>, ..., *b*<sub class="lower-index">|*b*|</sub> (record |*b*| denotes the current length of the array). Then one change is a sequence of actions: 
 -  Choose two distinct indexes *i* and *j* (1 ≤ *i*, *j* ≤ |*b*|; *i* ≠ *j*), such that *b*<sub class="lower-index">*i*</sub> ≥ *b*<sub class="lower-index">*j*</sub>. -  Get number *v* = *concat*(*b*<sub class="lower-index">*i*</sub>, *b*<sub class="lower-index">*j*</sub>), where *concat*(*x*, *y*) is a number obtained by adding number *y* to the end of the decimal record of number *x*. For example, *concat*(500, 10) = 50010, *concat*(2, 2) = 22. -  Add number *v* to the end of the array. The length of the array will increase by one. -  Remove from the array numbers with indexes *i* and *j*. The length of the array will decrease by two, and elements of the array will become re-numbered from 1 to current length of the array. 
George played for a long time with his array *b* and received from array *b* an array consisting of exactly one number *p*. Now George wants to know: what is the maximum number of elements array *b* could contain originally? Help him find this number. Note that originally the array could contain only positive integers.
The first line of the input contains a single integer *p* (1 ≤ *p* &lt; 10<sup class="upper-index">100000</sup>). It is guaranteed that number *p* doesn't contain any leading zeroes.
def gt(x, y):
	if len(x)>len(y): return True
	if len(x)==len(y): return x>y
	return False

s = {}
def solve(x):
	if hash(x) in s: return s[hash(x)]
	m = 1
	l = len(x)
	c = x.count('0')
	done = False
	if c==0:
		for i in range(l-1):
			if x[i]<x[i+1]: break
		else:
			m = l
			done = True
	if not done:
		for i in range(l-1, l//2-1, -1):
			if (x[i] != '0' and gt(x[:i], x[i:])):
				s1 = solve(x[:i])
				s2 = solve(x[i:])
				m = max(s1+s2, m)
				if m==(l-c): break
	s[hash(x)] = m
	return m

num = input()
r = solve(num)
print(r)
