Problem:
Score : 300 points

Problem Statement

E869120 found a chest which is likely to contain treasure.

However, the chest is locked. In order to open it, he needs to enter a string S consisting of lowercase English letters.

He also found a string S', which turns out to be the string S with some of its letters (possibly all or none) replaced with ?.

One more thing he found is a sheet of paper with the following facts written on it:

Condition 1: The string S contains a string T as a contiguous substring.

Condition 2: S is the lexicographically smallest string among the ones that satisfy Condition 1.

Print the string S.

If such a string does not exist, print UNRESTORABLE.

Constraints

1 \leq |S'|, |T| \leq 50

S' consists of lowercase English letters and ?.

T consists of lowercase English letters.

Input

Input is given from Standard Input in the following format:

S
T'

Output

Print the string S.

If such a string does not exist, print UNRESTORABLE instead.

Sample Input 1

?tc????
coder

Sample Output 1

atcoder

There are 26 strings that satisfy Condition 1: atcoder, btcoder, ctcoder,..., ztcoder.
Among them, the lexicographically smallest is atcoder, so we can say S = atcoder.

Sample Input 2

??p??d??
abc

Sample Output 2

UNRESTORABLE

There is no string that satisfies Condition 1, so the string S does not exist.

Solution in Scala (2.11.7) (judge verdict: Wrong Answer)

import scala.collection.mutable.ArrayBuffer
import scala.io.StdIn

object Main extends App {

  var ss = StdIn.readLine().reverse
  val t = StdIn.readLine().reverse
  //val buff = ArrayBuffer.empty[Char]
  val ret = ArrayBuffer.empty[String]

  val len = ss.length
  val lent = t.length
  var i = 0
  while (i < len) {
    var j = 0
    var k = i
    var unmatch = false
    //buff.clear()
    while (j < lent && !unmatch && k < len) {
      //if(t(j) == ss(k) || ss(k) == '?'){
      if(t(j) != ss(k) && ss(k) != '?'){
        unmatch = true
      } else {
        //buff.append(t(j))
        j += 1
        k += 1
      }
    }
    if(j == lent && !unmatch){
      ret.append(t)
      ret.append(ss.drop(k))
      i += len
    } else {
      ret.append(ss(i).toString)
      i += 1
    }
  }

  val result = ret.mkString("")
  println(if(len < lent || result == ss) "UNRESTORABLE" else result.replace("?", "a").reverse)

}