#include <bits/stdc++.h>
using namespace std;
template <class T>
inline bool chmax(T &a, const T &b) {
  return b > a ? a = b, true : false;
}
template <class T>
inline bool chmin(T &a, const T &b) {
  return b < a ? a = b, true : false;
}
template <class T>
using MaxHeap = priority_queue<T>;
template <class T>
using MinHeap = priority_queue<T, vector<T>, greater<T>>;
template <class T, class F = less<T>>
void sort_uniq(vector<T> &v, F f = F()) {
  sort(begin(v), end(v), f);
  v.resize(unique(begin(v), end(v)) - begin(v));
}
const int N = 2e5 + 5;
string s;
int dp[N];
int solve(int i, string t) {
  if (i >= s.size()) return 0;
  if (i + 1 == s.size()) return 1;
  if (dp[i]) return dp[i];
  string w = s.substr(i, 1);
  if (w == t) {
    chmax(dp[i], solve(i + 1, t + w));
  }
  if (w != t) {
    chmax(dp[i], solve(i + 1, w) + 1);
  }
  w += s[i + 1];
  chmax(dp[i], solve(i + 2, w) + 1);
  return dp[i];
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> s;
  cout << solve(0, "") << '\n';
  return 0;
}
