#include <bits/stdc++.h>
using namespace std;

vector<int> nums;
int wtf[100];
int parse(int x, int sz, bool shit_flag){
    int res = 0;
    int degree = 1;
    while(x > 0){
        res *= sz;
        res += wtf[x%10];
        x/=10;
        degree *= sz;
    }
    if(shit_flag){
        res += (degree - 1) / (sz - 1) - 1;
    }
    return res;
}

int reverse_num(int x){
    string s;
    if(x==0)
        s = "0";
    while(x>0){
        s.push_back(x%10);
        x/=10;
    }
    x=0;
    for(int i=0; i<s.size(); i++){
        x*=10;
        x+=s[i];
    }
    return x;
}

int main(){
    #ifdef LOCAL
    freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);
    #endif // LOCAL

    int x;
    while(cin>>x){
        nums.push_back(x);
    }
    nums.pop_back();
    bool shit[11];
    for(int i=0; i<10; i++)
        shit[i] = false;
    for(int i=0; i<nums.size(); i++)
        shit[nums[i]] = true;
    #ifdef LOCAL
    for(int i=0; i<10; i++)
        cout<<shit[i]<<' ';
    cout<<'\n';
    #endif // LOCAL
    nums.resize(0);
    for(int i=0; i<10; i++){
        if(!shit[i])
            nums.push_back(i);
    }
    #ifdef LOCAL
    for(int i=0; i<nums.size(); i++)
        cout<<nums[i]<<' ';
    cout<<'\n';
    cout<<x<<'\n';
    #endif // LOCAL
    x = reverse_num(x);
    #ifdef LOCAL
    cout<<x<<'\n';
    #endif // LOCAL
    for(int i=0; i<nums.size(); i++)
        wtf[nums[i]] = i;
    cout<<parse(x, nums.size(), shit[0]);
    return 0;
}
