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

typedef long long ll;

int main(){
    int N, K;
    cin >> N >> K;
    vector<int> D(K);
    for(int i=0; i<K; i++) cin >> D[i];
    
    
    vector<int> T;
    for(int i=0; i<10; i++){
        bool f=false;
        for(int j=0; j<K; j++){
            if(i == D[j]){
                f=true;
            }
        }
        if(!f){
            T.push_back(i);
        }
    }
    
    int digit=1;
    vector<int> n;
    while(1){
        if(N/10 != 0){
            digit++;
            n.push_back(N%10);
            N /= 10;
        }
        else {
            n.push_back(N);
            break;
        }
    }
    reverse(n.begin(),n.end());
    //cout << digit << endl;
    //for(int i=0; i<n.size(); i++) cout << n[i];
    //cout << endl;
    
    vector<int> ans(digit);
    for(int i=0; i<digit; i++){
        if(i==0){
            if(T[0]==0){
                for(int j=1; j<T.size(); j++){
                    if(T[j]>n[i]){
                        ans[i] = T[j];
                        for(int k=i+1; k<digit; k++){
                            n[k]=0;
                        }
                        break;
                    }
                    else if(T[j]==n[i]){
                        ans[i] = T[j];
                        break;
                    }
                }
            }
            else {
                for(int j=0; j<T.size(); j++){
                    if(T[j]>n[i]){
                        ans[i] = T[j];
                        for(int k=i+1; k<digit; k++){
                            n[k]=0;
                        }
                        break;
                    }
                    else if(T[j]==n[i]){
                        ans[i] = T[j];
                        break;
                    }
                }
            }
        }
        else {
            for(int j=0; j<T.size(); j++){
                if(T[j]>n[i]){
                    ans[i] = T[j];
                    for(int k=i+1; k<digit; k++){
                        n[k]=0;
                    }
                    break;
                }
                else if(T[j]==n[i]){
                    ans[i] = T[j];
                    break;
                }
            }
        }
    }
    if(n > ans){
        vector<int> m(digit+1), ans2(digit+1);
        for(int i=0; i<digit+1; i++){
            if(i==0) m[i]=1;
            else m[i]=0;
        }
        for(int i=0; i<digit+1; i++){
            if(i==0){
                if(T[0]==0){
                    for(int j=1; j<T.size(); j++){
                        if(T[j]>=m[i]){
                            ans2[i] = T[j];
                            break;
                        }
                    }
                }
                else {
                    for(int j=0; j<T.size(); j++){
                        if(T[j]>=m[i]){
                            ans2[i] = T[j];
                            break;
                        }
                    }
                }
            }
            else {
                for(int j=0; j<T.size(); j++){
                    if(T[j]>=m[i]){
                        ans2[i] = T[j];
                        break;
                    }
                }
            }
            cout << ans2[i];
        }
        cout << endl;
    }
    else {
        for(int i=0; i<digit; i++){
            cout << ans[i];
        }
        cout << endl;
    }
}


Measured memory_bytes: 256