down = []		# 下り坂の開始地点のスタック
lake = []			# 湖の面積のスタック
distance = 0		# 左端から数えた水平距離

gets.chomp.chars do |road|
	if road == "\\"
		down.push(distance)
	elsif road == "/"
		next if down.empty?	# すべての下り坂より高い地点への上昇は計算しない
		temp_area = distance - down.pop	# 一時的に算出した湖の面積
		
		if lake[down.length + 1] != nil
			temp_area += lake.pop.inject(:+)	# 低い位置の湖の面積を合算する
		end
		
		if lake[down.length] == nil
			lake[down.length] = [temp_area]	# nil ならば、要素1の"配列"を代入
		else
			lake[down.length].push(temp_area)
		end
	end

	distance += 1
end

lake = lake.compact.flatten!

puts lake.inject(:+)
puts "#{lake.length} #{lake.join(" ")}"

