#include <bits/stdc++.h>
using namespace std;
int inf = -10000000;
int dp(vector<vector<int> > &table, string s, int n, int k) {
  if (n + k == s.size()) {
    if (s.substr(n, k) == s.substr(n - k, k)) {
      table.at(k - 1).at(n) = 0;
      return 0;
    } else {
      table.at(k - 1).at(n) = 1;
      return 1;
    }
  } else if (n + k > s.size()) {
    return 0;
  } else if (table.at(k - 1).at(n) != -1) {
    return table.at(k - 1).at(n);
  } else {
    int ans;
    if (k == 1) {
      if (s.at(n - 1) == s.at(n)) {
        ans = dp(table, s, n + 2, 2) + 1;
      } else {
        ans = max(dp(table, s, n + 2, 2), dp(table, s, n + 1, 1)) + 1;
      }
      table.at(k - 1).at(n) = ans;
      return ans;
    } else {
      if (s.substr(n - 2, 2) == s.substr(n, 2)) {
        ans = dp(table, s, n + 1, 1) + 1;
      } else {
        ans = max(dp(table, s, n + 2, 2) + 1, dp(table, s, n + 1, 1) + 1);
      }
      table.at(k - 1).at(n) = ans;
      return ans;
    }
  }
}
int main() {
  string s;
  cin >> s;
  vector<vector<int> > table(2, vector<int>(s.size(), -1));
  int ans = max(dp(table, s, 1, 1) + 1, dp(table, s, 2, 2) + 1);
  cout << ans << endl;
}
