import Control.Applicative
import Control.Monad
import Data.List
import Data.Char
strToInt s = (read :: String -> Int) s

main :: IO ()
main = do
    -- 文字列の入力
    ss <- getLine
    ts <- getLine
    -- 出力
    putStrLn $ solve ss ts

isPre :: String -> String -> Bool
isPre [] _ = False
isPre _ [] = True
isPre (s:ss) (t:ts) = if s == '?' || s == t then isPre ss ts else False

replace :: String -> Int -> String -> String
replace ss k ts = map (\c -> if c == '?' then 'a' else c) (take (length ss - k) ss ++ ts)

solve :: String -> String -> String
solve ss ts = if null cands then "UNRESTORABLE" else replace ss (length $ head cands) ts
    where
        cands = dropWhile (not . flip isPre ts) (tails ss)
