#include <bits/stdc++.h>
using namespace std;
string second;
int now;
bool ok;
void dfs(int i) {
  if (i == second.size()) {
    ok = 1;
    return;
  }
  if (second[i] - '0' != now) return;
  if (second[i + 1] - '0' == (second[i + 1] - '0' + now) / 2)
    now = (second[i + 1] - '0' + now) / 2;
  else
    now = (second[i + 1] - '0' + now + 1) / 2;
  dfs(i + 1);
}
long long dp[10][51];
int main() {
  cin >> second;
  for (int i = 0; i < 10; i++) dp[i][0] = 1;
  for (int i = 0; i < second.size(); i++)
    for (int j = 0; j < 10; j++) {
      if ((j + second[i] - '0') % 2 == 0)
        dp[(j + second[i] - '0') / 2][i] += (i ? dp[j][i - 1] : 0);
      else {
        dp[(j + second[i] - '0') / 2][i] += (i ? dp[j][i - 1] : 0);
        dp[(j + second[i] - '0' + 1) / 2][i] += (i ? dp[j][i - 1] : 0);
      }
    }
  long long ans = 0;
  for (int i = 0; i < 10; i++) {
    ans += dp[i][second.size() - 1];
  }
  now = second[0] - '0';
  dfs(0);
  if (ok) ans--;
  cout << ans << endl;
  return 0;
}
