#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1000000007LL;
int dp[200005][2];
int main() {
  cin.sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  string s;
  cin >> s;
  int n = s.size();
  fill(dp[0], dp[n + 1], 0);
  for (int i = 0; i < n; i++) {
    dp[i + 1][0] = max(dp[i + 1][0], dp[i][1] + 1);
    if (i == 0 || (i > 0 && i < n - 1 && s[i] != s[i + 1])) {
      dp[i + 1][0] = max(dp[i + 1][0], dp[i][0] + 1);
    }
    dp[i + 2][1] = max(dp[i + 2][1], dp[i][0] + 1);
    if (i <= 1 ||
        (i >= 2 && i < n - 2 && s.substr(i - 1, 2) != s.substr(i + 1, 2))) {
      dp[i + 2][1] = max(dp[i + 2][1], dp[i][1] + 1);
    }
  }
  cout << min(dp[n][0], dp[n][1]) << "\n";
  return 0;
}
