#include <bits/stdc++.h>
using namespace std;
pair<long long, long long> dpmax[100100];
char inp[100100];
int size;
pair<long long, long long> filldpmax() {
  dpmax[size] = pair<long long, long long>(0, 1);
  dpmax[size - 1] = pair<long long, long long>((inp[size - 1] == '9'), 1);
  for (int i = size - 2; i >= 0; i--) {
    dpmax[i] = dpmax[i + 1];
    if (inp[i] == '9')
      dpmax[i].first++;
    else if (inp[i] + inp[i + 1] - '0' - '0' == 9) {
      if (dpmax[i + 1].first == dpmax[i + 2].first + 1)
        dpmax[i] = pair<long long, long long>(
            dpmax[i + 1].first, dpmax[i + 1].second + dpmax[i + 2].second);
      else if (dpmax[i + 1].first > dpmax[i + 2].first + 1)
        dpmax[i] = dpmax[i + 1];
      else
        dpmax[i] = pair<long long, long long>(dpmax[i + 2].first + 1,
                                              dpmax[i + 2].second);
    }
  }
  return dpmax[0];
}
int main() {
  cin.getline(inp, sizeof(inp));
  size = strlen(inp);
  cout << filldpmax().second << endl;
  return 0;
}
