main = do
  s <- getLine :: IO String
  t <- getLine :: IO String
  let f = find s t (-1) []
  putStrLn $ if null f then "UNRESTORABLE" else change s t (maximum f) 0


find :: String -> String -> Int -> [Int] -> [Int]
find s t i xs
  | length s < lt = xs
  | complete = [i+1]
  | contain || allq = find (tail s) t (i+1) ((i+1):xs)
  | otherwise = find (tail s) t (i+1) xs
    where
      lt = length t
      taken = take lt s
      contain = or $ zipWith (==) t taken
      allq = taken == (replicate lt '?')
      complete = taken == t

change :: String -> String -> Int -> Int -> String
change [] _ _ _ = []
change (x:xs) t i n 
  | n == i = t ++ change (drop (length t) (x:xs)) t i (n + length t)
  | x == '?' = ['a'] ++ change xs t i (n+1)
  | otherwise = [x] ++ change xs t i (n+1)
