#include <iostream>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <numeric>
#include <functional>
#include <cmath>
#include <queue>
#include <stack>
#include <string>

#define repd(i,a,b) for (int i=(a);i<(b);i++)
#define rep(i,n) repd(i,0,n)
typedef long long ll;

using namespace std;


int inputValue(){
    int a;
    cin >> a;
    return a;
};

void inputArray(int * p, int a){
    rep(i, a){
        cin >> p[i];
    }
};

void inputVector(vector<int> * p, int a){
    rep(i, a){
        int input;
        cin >> input;
        p -> push_back(input);
    }
}

template <typename T>
void output(T a, int precision) {
    if(precision > 0){
        cout << setprecision(precision)  << a << "\n";
    }
    else{
        cout << a << "\n";
    }
}

int main(int argc, const char * argv[]) {
    
  // source code
  string ss;
  cin >> ss;
  int vccount = 0;
  vector<string> vc;

  rep(i,ss.length())
  {
    vc.push_back(&ss[i]);
    if(vc.size() > 1 && *vc[vc.end() - 1] == ss[i])
    {
      if(i == ss.Length() - 1)
      {
        cout << vc.size() - 1;
        return;
      }
      else
      {
        *vc[vc.end()] = *vc[vc.end()] + ss[i + 1];
        i++;
      }
    }
  }
  cout << vc.size();
  return;
  
  
}
