#include <bits/stdc++.h>
using namespace std;
int n;
int h[8000 + 1];
char str[8000 + 1];
int per[8000][8000];
int dp[8000];
void kmp(int id) {
  h[1] = 0;
  per[id][id] = 1;
  for (int i = 1, j = 0; i < n - id; i++) {
    while (j > 0 && str[id + i] != str[id + j]) j = h[j];
    if (str[id + i] == str[id + j]) j++;
    h[i + 1] = j;
    per[id][id + i] = i - h[i + 1] + 1;
    if ((i + 1) % per[id][id + i] != 0) per[id][id + i] = i + 1;
    per[id][id + i] = (i + 1) / per[id][id + i];
  }
}
int log(int x) {
  int cnt = 0;
  while (x > 0) {
    x /= 10;
    cnt++;
  }
  return cnt;
}
inline int f(int i, int j) {
  return ((j + 1 - i) / per[i][j]) + log(per[i][j]);
}
int main() {
  scanf("%s", str);
  n = strlen(str);
  for (int i = 0; i < n; i++) kmp(i);
  for (int i = n - 1; i >= 0; i--) {
    dp[i] = f(i, n - 1);
    for (int j = i + 1; j < n; j++)
      dp[i] = (dp[i] > dp[j] + f(i, j - 1) ? dp[j] + f(i, j - 1) : dp[i]);
  }
  printf("%d\n", dp[0]);
  return 0;
}
