//agc037_a_dp.cpp
//Sat Aug 17 22:04:24 2019

#include <iostream>
#include <string>
#include <queue>
#include <map>
#include <unordered_map>
#include <vector>
#include <algorithm>
#include <math.h>
#include <set>
#define INTINF 2147483647
#define LLINF 9223372036854775807
using namespace std;
using ll=long long;
typedef pair<int,int> P;

int main(){
	string s;
	cin >> s;

	dp[s.length()][2];
	for (int i=0;i<s.length();i++){
		dp[i][0] = 0;
		dp[i][1] = 0;
	}

	if (s[0]==s[1]){
		dp[0][0]=1;
		dp[0][1]=0;
		dp[1][0]=0;
		dp[1][1]=1;
	}else{
		dp[0][0]=1;
		dp[0][1]=0;
		dp[1][0]=2;
		dp[1][1]=1;
	}

	for (i=3;i<=s.length();i++){
		if (s[i]!=s[i-1]){
			s[i][0]=s[i-1][0]+1;
			s[i][1]=s[i-2][0]+1;
		}else{
			s[i][0]=s[i-1][1]+1;
			s[i][1]=s[i-2][0]+1;
		}
	}

	cout << max(s[s.length()-1][0],s[s.length()-1][1])<< endl;
//	printf("%.4f\n",ans);
}