// inputに入力データ全体が入る
function Main(input) {
  var S = input;
  var arrayS = S.split('');
  var arrayR = [];
  var arrayQ = [];

  for(var i=0; i < arrayS.length; i++){
    if(i == 0){
      if(arrayS[i] != arrayS[i+1])
        arrayR.push(`${arrayS[i]}`);
      else if(arrayS[i] == arrayS[i+1]){
        arrayR.push(`${arrayS[i]}${arrayS[i+1]}`);
        i++
      }
    }
    else{
      if(arrayR.slice(-1)[0] != arrayS[i]){
        arrayR.push(`${arrayS[i]}`);
      }
      else if(arrayR.slice(-1)[0] == arrayS[i]){
        if(arrayS[i+1]){
          arrayR.push(`${arrayS[i]}${arrayS[i+1]}`);
          i++
        }
        else{
          arrayR.push(`${arrayS[i]}`);
        }
      }
      if(arrayR.slice(-1)[0] === arrayR.slice(-2)[0]){
        arrayR.pop();
        arrayR[arrayR.length-1] = `${arrayR[arrayR.length-1]}${arrayR[arrayR.length-1]}`;
      }
    }
  }

  for(var i=0; i < arrayS.length; i++){
    if(i == 0){
        arrayQ.push(`${arrayS[i]}`);
    }
    else{
      if(arrayQ.slice(-1)[0] != arrayS[i]){
        arrayQ.push(`${arrayS[i]}`);
      }
      else if(arrayQ.slice(-1)[0] == arrayS[i]){
        if(arrayS[i+1]){
          arrayQ.push(`${arrayS[i]}${arrayS[i+1]}`);
          i++
        }
        else{
          arrayQ.push(`${arrayS[i]}`);
        }
      }
      if(arrayQ.slice(-1)[0] === arrayQ.slice(-2)[0]){
        arrayQ.pop();
        arrayQ[arrayQ.length-1] = `${arrayQ[arrayQ.length-1]}${arrayQ[arrayQ.length-1]}`;
      }
    }
  }
  var rl = arrayR.length;
  if(arrayR[rl-1] == arrayR[rl-2]) rl--;
  var ql = arrayQ.length;
  if(arrayQ[ql-1] == arrayQ[ql-2]) ql--;

  console.log(Math.max(rl,ql));
  // console.log(arrayR);
  // console.log(arrayR.length);
  // console.log(arrayQ)
  // console.log(arrayQ.length);
 }
 //*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
 Main(require("fs").readFileSync("/dev/stdin", "utf8"));
