unittest
{
	assert( [ "1000 8", "1 3 4 5 6 7 8 9" ].parse.expand.solve == 2000 );
	assert( [ "9999 1", "0" ].parse.expand.solve == 9999 );
	
	assert( [ "1112 9", "0 2 3 4 5 6 7 8 9" ].parse.expand.solve == 11111 );		// 追加ケース
}



import std.algorithm;
import std.conv;
import std.functional;
import std.range;
import std.stdio;
import std.typecons;

void main()
{
	stdin.byLineCopy.parse.expand.solve.writeln;
}

auto parse( Range )( Range input )
if( isInputRange!Range && is( ElementType!Range == string ) )
{
	auto nk = input.front.split.to!( long[] );
	input.popFront;
	auto ds = input.front.split.map!( to!char ).array;
	return tuple( nk[ 0 ], ds );
}

auto solve( long n, char[] ds )
{
	for( ;; n++ )
	{
		if( memoize!f( n.to!string, ds ) ) break;
	}
	return n;
}

bool f( string cs, char[] ds )
{
	if( cs.empty ) return true;
	foreach( d; ds )
	{
		if( cs[ 0 ] == d ) return false;
	}
	return memoize!f( cs[ 1 .. $ ], ds );
}
