#include<cstdio>  
#include<cstring>  
#include<algorithm>  
#include<iostream>  
#include<string>  
#include<vector>  
#include<stack>  
#include<bitset>  
#include<cstdlib>  
#include<cmath>  
#include<set>  
#include<list>  
#include<deque>  
#include<map>  
#include<queue>
using namespace std;
typedef long long ll;
const ll inf=1<<29;
const ll Maxn=1e6;

int a[15],c[Maxn],d[Maxn],e[Maxn];
char b[Maxn];
int flag=0;

int main(){
int n,k,js;
int ans=0;
a[0]=0;
a[1]=1;
a[2]=2;
a[3]=3;
a[4]=4;
a[5]=5;
a[6]=6;
a[7]=7;
a[8]=8;
a[9]=9;
cin>>n>>k;
sprintf(b,"%d",n);
int len=strlen(b);
for(int i=1;i<=k;i++){
scanf("%d",&d[i]);
}
for(int i=0;i<len;i++){
for(int j=1;j<=k;j++){
if(b[i]-'0'!=d[j])  ans++;
}
}
int mms=0,mss=0;
if(ans==len) printf("%d\n",n);
else{
for(int i=0;i<=9;i++){
for(int j=1;j<=k;j++){
if(a[i]!=d[j]) mms++;
}
if(mms==k){
c[mss]=a[i];
mss++;
}
mms=0;
}
sort(c,c+mss);
for(int i=0;i<len;i++){
for(int j=0;j<=mss;j++){
if(b[i]-'0'==c[j]){
e[i]=c[j];
if(i==0) js=j;
break;
}
if(c[j]>b[i]-'0'){
e[i]=c[j];
break;
}
if(c[j]<b[i]-'0'&&i!=0&&b[0]-'0'==c[js]){
e[0]=c[js+1];
flag=1;
}
}
}
if(c[mss]>=b[0]-'0'){
for(int i=0;i<len;i++){
if(flag==1){
if(i==0) printf("%d",e[0]);
else printf("%d",e[i]);
}
if(flag==0) printf("%d",e[i]);
}
}
if(c[mss]<b[0]-'0'){
for(int i=0;i<=len;i++){
if(c[0]!=0) printf("%d",c[0]);
if(c[0]==0&&i==0) printf("%d",c[1]);
if(c[0]==0&&i!=0) printf("%d",c[0]);
}
}
}
}