#include <bits/stdc++.h>

#define rep(i,n) for(long long int (i)=0;(i)<(int)(n);(i)++)
#define rrep(i,a,b) for(long long int i=(a);i<(b);i++)
#define rrrep(i,a,b) for(long long int i=(a);i>=(b);i--)
#define all(v) (v).begin(), (v).end()
#define pb(q) push_back(q)
#define P pair<int,int>
#define Abs(a,b) max(a,b)-min(a,b)
#define YES(condition) if(condition){cout << "YES" << endl;}else{cout << "NO" << endl;}
#define Yes(condition) if(condition){cout << "Yes" << endl;}else{cout << "No" << endl;}
#define Cout(x) cout<<(x)<<endl
#define POSSIBLE(n) cout << ((n) ? "POSSIBLE" : "IMPOSSIBLE"  ) << endl
#define Possible(n) cout << ((n) ? "Possible" : "Impossible"  ) << endl
#define possible(n) cout << ((n) ? "possible" : "impossible"  ) << endl
#define Size(n) (n).size()

typedef long long ll;

using namespace std;

const int INF = 1e9,MOD = 1e9 + 7;
const ll LINF = 1e18;

//long long int kaizyo(long long int hh){
  //  cmp=1;
    //while(hh>1){
      //  cmp=(cmp*hh)%MOD;
        //hh--;
    //}
    //return cmp;
//}
//long long int ruizyo(long long int aa, long long int bb){
  //  if(aa==0){
    //    return 1;
    //}
    //else if(aa%2==0){
      //  long long int tt=ruizyo(aa/2,bb);
        //return (tt*tt)%MOD;
    //}
    //else{
      //  return (ruizyo(aa-1,bb)*bb)%MOD;
    //}
//}フェルマ－のア


//while(x!=0){
            //sum+=x%10;
           // x/=10;
        //}
        //各桁の和

//pair<int,int> p[100000];
//P r[100000];
//cin >> tmp;
//p[i]=make_pair(tmp,i);
//cout << p[i].second+1 << endl;//ペアの右側つまりiを出力

//s.find(w[i])==string::npos
//findの使い方

//for(int i=0;i<n;i++){
   // b[i]=x%2;
    //x/=2;
  //}二進数

//visited=vector<vector<bool>>(10,vector<bool>(10,false));アを全部falseに


long long int n,cnt=0,cntt=0,ans=0,a[10000000],b,c,cmpp[10000000],cmppp[10000000],m,h,k,w,x,y,sum=0,pos;
int dy[]={1,0,-1,0};
int dx[]={0,1,0,-1};
string alph("123456789"),s,ww,cmp;
bool fl=true;

int main(void){
       cin.tie(0);
    ios::sync_with_stdio(false);

       cin >>s>>k;
     rep(i,k){
         cin>>a[i];
         if(a[i]==0){
             cmpp[0]=1;
         }
         else if(a[i]==1){
             cmpp[1]=1;
         }
         else if(a[i]==2){
             cmpp[2]=1;
         }
         else if(a[i]==3){
             cmpp[3]=1;
         }
         else if(a[i]==4){
             cmpp[4]=1;
         }
         else if(a[i]==5){
             cmpp[5]=1;
         }
         else if(a[i]==6){
             cmpp[6]=1;
         }
         else if(a[i]==7){
             cmpp[7]=1;
         }
         else if(a[i]==8){
             cmpp[8]=1;
         }
         else if(a[i]==9){
             cmpp[9]=1;
         }
     }
     rep(i,10){
         if(cmpp[i]==0){
             cmppp[cnt]=i;
            // Cout(cmppp[cnt]);
             cnt++;
         }
     }
     if(cmppp[cnt-1]>=s[Size(s)-1]-'0'){
     rep(j,Size(s)){
     rep(i,cnt){
         if(cmppp[i]>=s[j]-'0'){
            cout << cmppp[i];
           // fl=false;
           x=cmppp[i];
            break;
         }
     }
     break;
     }
     if(x==s[0]-'0'){
         rep(i,Size(s)-1){
         cout << x;
     } 
     }
     else{
     rep(i,Size(s)-1){
         cout << cmppp[0];
     }
     }
    cout << endl;
     }
     else{
         rep(i,Size(s)+1){
         if(cmppp[0]==0 && fl){
             cout << cmppp[1];
             fl=false;
            // cout << "a";
         }
         else{
             cout << cmppp[0];
         }
         //cout << "aa ";
        
     }
     }
       
return 0;
}


Measured memory_bytes: 4352