#include <iostream>
#include <vector>
#include <sstream>
#include <string>
#include <string.h>
#include <algorithm>
#include <cstdio>
#include <math.h>
#include <cmath>
using namespace std;
template <class A, class B>
A cvt ( B x )
{
    stringstream s; s<<x;
    A res;
    s>>res;
    return res;
}
int main()
{
    vector<char>c;
    char t;
    while(scanf("%c",&t)==1,t!='\n')
    {
        c.push_back(t);
    }
    int n;
    cin>>n;
    string str= cvt<string>(n);
    for(int i=0;i<str.length();i++)
    {
        int save=cvt<int>(str[i]);
        for(int j=0;j<c.size();j++)
        {
            int m=cvt<int>(c[j]);
            if(save>m)
            {
                //cout<<i<<endl;
               int t=cvt<int>(str[i]);
               t--;
               str[i]=cvt<char>(t);
            }
        }
    }
    int kol=0;
  for(int i=0;i<c.size();i++)
  {
      if(c[i]!=' ') kol++;
  }
  int osn= 10-kol;
    int res=0;
    int index=0;
    for(int i=str.length()-1;i>=0;i--)
    {
        int k=cvt<int>(str[i]);
         res+=(k*pow(osn,index));
        // cout<<index<<endl;
        // cout<<pow(osn,index)<<endl;
         index++;
    }
   cout<<res<<endl;
//    int numb=0;
//    for(int i=0;true;i++)
//    {
//       string tmp = cvt<string>(i);
//       bool flag=false;
//       for(int j=0;j<c.size();j++)
//       {
//              if(find(tmp.begin(),tmp.end(),c[j])!=tmp.end())
//              {
//                     flag=true;
//                     break;
//              }
//       }
//       if(!flag)
//       {
//            if(str==tmp)
//            {
//                cout<<numb<<endl;
//                return 0;
//            }
//             numb++;
//       }
//    }
    return 0;
}

