{-# LANGUAGE OverloadedStrings #-}
module Main where

import Prelude hiding (putStrLn, getLine, getContents)
import Data.Text as T (splitOn, pack, unpack)
import Data.Text.IO
import qualified Data.List as L
import Debug.Trace (trace)


main = do
    n:_ <- (map (read . unpack)) . (splitOn " ") <$> getLine :: IO [Int]
    ds <- (map (read . unpack)) . splitOn " " <$> getLine :: IO [Int]
    putStrLn $ showT $ solve n ds

-- | solve
-- >>> solve 1000 [1,3,4,5,6,7,8,9]
-- 2000
-- >>> solve 9999 [0]
-- 9999
-- >>> solve 1000 [0]
-- 1111
-- >>> solve 2 [2..9]
-- 10
solve :: Int -> [Int] -> Int
solve x ds =
    let eIndex = L.findIndex (flip elem ds) $ reverse $ digits x
    in case eIndex of
        Just i -> solve ((10 ^ i) + x) ds
        Nothing -> x

showT = pack.show

debug x = trace (show x) x

-- | get digets of 10x number
-- >>> digits 123
-- [1,2,3]
--
digits :: Int -> [Int]
digits = reverse . f
  where
    f 0 = []
    f x = h:(f t)
      where (t, h) = x `divMod` 10