#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline void Int(T &a) {
  bool minus = false;
  a = 0;
  char ch = getchar();
  while (true) {
    if (ch == '-' or (ch >= '0' && ch <= '9')) break;
    ch = getchar();
  }
  if (ch == '-')
    minus = true;
  else
    a = ch - '0';
  while (true) {
    ch = getchar();
    if (ch < '0' || ch > '9') break;
    a = a * 10 + (ch - '0');
  }
  if (minus) a *= -1;
}
template <typename T>
inline void Int(T &a, T &b) {
  Int(a), Int(b);
}
template <typename T>
inline void Int(T &a, T &b, T &c) {
  Int(a, b), Int(c);
}
template <typename T>
inline void Int(T &a, T &b, T &c, T &d) {
  Int(a, b), Int(c, d);
}
void err(istream_iterator<string> it) { cout << endl; }
template <typename T, typename... Args>
void err(istream_iterator<string> it, T a, Args... args) {
  cerr << *it << " = " << a << ' ';
  err(++it, args...);
}
const int N = (int)2e5 + 5;
const int maxN = (int)1e6 + 6;
const long long Mod = (long long)1e9 + 7;
const int inf = (int)2e9;
const long long Inf = (long long)1e18;
const int mod = (int)1e9 + 7;
inline int add(int a, int b, int mod) {
  a += b;
  return a >= mod ? a - mod : a;
}
inline int sub(int a, int b, int mod) {
  a -= b;
  return a < 0 ? a + mod : a;
}
inline int mul(int a, int b, int mod) { return (long long)a * b % mod; }
long long dp[55][10];
int n;
char s[55];
long long call(int index, int digit) {
  if (index == n) return 1;
  long long &ret = dp[index][digit];
  if (~ret) return ret;
  ret = 0;
  if (index == 0) {
    for (int i = 0; i < 10; ++i) {
      ret += call(index + 1, i);
    }
  } else {
    int x = digit + s[index] - '0';
    ret += call(index + 1, x / 2);
    if (x & 1) ret += call(index + 1, (x + 1) / 2);
  }
  return ret;
}
bool bad() {
  int p = s[0] - '0';
  for (int i = 1; i < n; ++i) {
    int d = s[i] - '0';
    int f = (d + p);
    if (f & 1) {
      if (f / 2 != d and (f + 1) / 2 != d) return 0;
    } else {
      if (f / 2 != d) return 0;
    }
    p = d;
  }
  return 1;
}
int main() {
  int test = 1, tc = 0;
  while (test--) {
    memset(dp, -1, sizeof dp);
    scanf("%s", s);
    n = strlen(s);
    printf("%lld\n", call(0, 0) - bad());
  }
  return 0;
}
