#include <bits/stdc++.h>
using namespace std;
char s[55];
int l;
int df[55][10];
int f(int pos, int c) {
  if (pos == l) return 1;
  if (df[pos][c] != -1) return df[pos][c];
  int res = 0;
  int nn = c + s[pos];
  res += f(pos + 1, nn / 2);
  if (nn & 1) res += f(pos + 1, (nn + 1) / 2);
  return df[pos][c] = res;
}
bool good() {
  for (int i = 1; i < l; i++) {
    int nn = s[i] + s[i - 1];
    if (nn & 1) {
      if (nn / 2 != s[i] && (nn + 1) / 2 != s[i]) return false;
    } else {
      if (nn / 2 != s[i]) return false;
    }
  }
  return true;
}
int main() {
  memset(df, -1, sizeof(df));
  scanf("%s", s);
  l = strlen(s);
  for (int i = 0; i < l; i++) s[i] -= '0';
  long long ans = 0;
  for (int i = 0; i < 10; i++) ans += f(1, i);
  if (good()) ans--;
  cout << ans << endl;
  return 0;
}
