// Original C++ solution (slower):
/*************************************************

 *************************************************

 *************************************************

 *** _________________  |            |  |     /***

 ***         |          |            |  |    / ***

 ***         |          |            |  |   /  ***

 ***         |          |            |  |  /   ***

 ***         |          |            |  | /    ***

 ***         |          |____________|  |/  en ***

 ***         |          |            |  |\     ***

 ***         |          |            |  | \    ***

 *** _____   |          |            |  |  \   ***

 ***   |     |          |            |  |   \  ***

 ***   \     /          |            |  |    \ ***

 ***    \___/           |            |  |     \***

 *************************************************

 *************Written by: JiangHaoKai*************

 *************************************************/



//#include <bits/stdc++.h>

#include <iostream>

#include <set>

using namespace std;



typedef long long ll;

typedef unsigned int ui;

typedef unsigned long long ull;

typedef float fl;

typedef double ld;

typedef pair<int,int> pii;

#define ui(n) ((unsigned int)(n))

#define ll(n) ((long long)(n))

#define ull(n) ((unsigned long long)(n))

#define fl(n) ((float)(n))

#define ld(n) ((double)(n))

#define char(n) ((char)(n))

#define Bool(n) ((bool)(n))

#define fixpoint(n) fixed<<setprecision(n)

const int INF=1e9+7;

const ll LINF=1e18;

#define PI 3.1415926535897932384626433832795028841971

#define MP make_pair

#define MT make_tuple

#define All(a) (a).begin(),(a).end()

#define pall(a) (a).rbegin(),(a).rend()

#define mod 1000000007

#define sz(a) ((int)(a).size())

#define rep(i,n) for(int i=0;i<n;i++)

#define rep1(i,n) for(int i=1;i<=n;i++)

#define repa(i,a,n) for(int i=a;i<n;i++)

#define repd(i,n) for(int i=n-1;i>=0;i--)

#define FOR(i,a,n,step) for(int i=a;i<n;i+=step)

#define repv(itr,v) for(__typeof((v).begin()) itr=(v).begin();itr!=(v).end();itr++)

#define repV(i,v) for(auto i:v)

#define MS(x,y) memset(x,y,sizeof(x))

#define sqr(x) ((x)*(x))

#define filein(x) freopen(x,"r",stdin)

#define fileout(x) freopen(x,"w",stdout)

#define fileout2(filename,name) ofstream name(filename,ios::out)

#define filein2(filename,name) ifstream name(filename,ios::in)

#define file(filename,name) fstream name(filename,ios::in|ios::out)

#define Pause system("pause")

#define Cls system("cls")

#define fs first

#define sc second

#define PC(x) putchar(x)

#define GC(x) x=getchar()

#define Endl PC('\n')



inline int READ()

{

    int X=0,w=0;char ch=0;while(!isdigit(ch)){w|=ch=='-';ch=getchar();}while(isdigit(ch))X=(X<<3)+(X<<1)+(ch^48),ch=getchar();

	return w?-X:X;

}

inline void WRITE(int x){if(x<0)putchar('-'),x=-x;if(x>9)WRITE(x/10);putchar(x%10+'0');}



/*************************************************************Begin****************************************************************/

int n=READ(),k=READ();

set<int> dislike;



inline bool ok(int x)

{

	if(x==0) return 1; else if(dislike.count(x%10)) return 0; else return ok(x/10);

}



int main()

{

	rep(i,k) dislike.insert(READ());

	

	repa(i,n,1000000) if(ok(i)) {WRITE(i);return 0;}



	return 0;

}

/**************************************************************End*****************************************************************/


// Optimized solution to the same problem (faster):
#include <stdio.h>

#include <math.h>

#define MAX_N 10000

#define MAX_k 9

int N, k;

int D[MAX_k];

int check(int a){

    int i, j, n, m;

n=a;

while(n!=0){

        m = n%10;

        for (j=0; j<k; j++)

            if (m==D[j]) return 1;

            n/=10;

}

    return 0;

}

int main(){

    int i;

    scanf("%d%d", &N, &k);

    for (i=0; i<k; i++)

        scanf("%d", &D[i]);

    i=N;

    while (1)

    {

        if(check(i)==0)break;

        else

        {

            i++;

        }

    }

    printf("%d\n", i);

    return 0;

}


// Fastest known solution for this problem: