#include <bits/stdc++.h>
using namespace std;
long long mod = 1e9 + 7;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
template <typename A, typename B>
istream& operator>>(istream&, pair<A, B>&);
template <typename A>
istream& operator>>(istream&, vector<A>&);
void add(long long&, long long);
long long mul(long long, long long);
long long powz(long long, long long);
template <typename A>
ostream& operator<<(ostream&, vector<A>&);
const long long N = 1000002;
void solve() {
  string s;
  cin >> s;
  string z = "";
  long long cnt = 0;
  for (long long i = 0; i < s.length(); i++) {
    long long j = i + 1;
    while (j < s.length() && s[j] == s[i]) {
      j++;
    }
    cnt++;
    i = j - 1;
  }
  cout << cnt + 1;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  long long tc = 1;
  for (long long _ = 0; _ < tc; _++) {
    solve();
    if (_ != tc - 1) cout << "\n";
  }
}
long long mul(long long a, long long b) { return ((a)*1ll * (b)) % mod; }
void add(long long& a, long long b) {
  a += b;
  if (a >= mod) a -= mod;
}
long long powz(long long a, long long b) {
  long long res = 1;
  while (b) {
    if (b & 1) res = mul(res, a);
    b /= 2;
    a = mul(a, a);
  }
  return res;
}
template <typename A, typename B>
istream& operator>>(istream& input, pair<A, B>& x) {
  input >> x.first >> x.second;
  return input;
}
template <typename A>
istream& operator>>(istream& input, vector<A>& x) {
  for (auto& i : x) input >> i;
  return input;
}
template <typename A>
ostream& operator<<(ostream& output, vector<A>& x) {
  for (auto& i : x) output << i << ' ';
  return output;
}
