#[allow(unused_imports)]
use std::{
    collections::{HashMap, HashSet, BinaryHeap, VecDeque, BTreeSet, BTreeMap},
    io::{read_to_string, stdin, Write, stdout},
};

use proconio::{input, fastout, marker::Chars};

#[fastout]
fn main(){
    input!{
		x: Chars,
		y: Chars,
	}
    if x.len()==y.len(){
        let mut res = Vec::new();
        for i in 0..x.len(){
            res.push(x[i].to_string());
            res.push(y[i].to_string());
        }
        println!("{}", res.join(""));
    } else if x.len()==y.len()+1{
        let mut res = Vec::new();
        for i in 0..y.len(){
            res.push(x[i].to_string());
            res.push(y[i].to_string());
        }
        res.push(x[x.len()-1].to_string());
        println!("{}", res.join(""));
    } else {
        println!("?");
    }
}