#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1000000007;
vector<long long> pw2(51, 1);
vector<long long> pw10(19, 1);
long long maxx(long long x, long long y, long long z) {
  return max(max(x, y), z);
}
long long minn(long long x, long long y, long long z) {
  return min(min(x, y), z);
}
long long mid(long long x, long long y, long long z) {
  return x > y ? y >= z ? y : min(z, x) : x >= z ? x : min(y, z);
}
long long gcd(long long x, long long y) {
  if (x % y == 0)
    return y;
  else
    return gcd(y, x % y);
}
long long lcm(long long x, long long y) { return x * (y / gcd(x, y)); }
long long myceil(long long x, long long y) {
  if (x <= y)
    return 1;
  else if (x % y == 0)
    return x / y;
  else
    return x / y + 1;
}
int main() {
  string s;
  cin >> s;
  vector<long long> L(s.size(), 0);
  string mem = "-";
  long long tmp;
  for (int i = s.size() - 1; i >= 0; i--) {
    if (mem[0] == s[i]) {
      tmp++;
      L[i] = tmp;
    } else {
      tmp = 1;
      L[i] = tmp;
      mem = s[i];
    }
  }
  long long ans = 0, i = 0;
  while (i < s.size()) {
    if (i + L[i] == s.size()) {
      ans += (L[i] / 2) + 1;
      break;
    } else {
      if (mem[0] != s[i]) {
        mem = s[i];
        i++;
        ans++;
      } else {
        mem = s[i] + s[i + 1];
        i += 2;
        ans++;
      }
    }
  }
  cout << ans;
}
