use std::io;
fn main() {
let mut buffer = String::new();
io::stdin().read_line(&mut buffer).expect("%d %d %d");
let (rneed, gneed, bneed) = {
let ins: Vec<usize> = buffer
.trim()
.split(' ')
.map(|s| s.parse::<usize>().unwrap())
.collect();
(ins[0], ins[1], ins[2])
};
buffer.clear();
io::stdin().read_line(&mut buffer).expect("%d %d %d");
let (rhave, ghave, bhave) = {
let ins: Vec<usize> = buffer
.trim()
.split(' ')
.map(|s| s.parse::<usize>().unwrap())
.collect();
(ins[0], ins[1], ins[2])
};
buffer.clear();
io::stdin().read_line(&mut buffer).expect("%d %d");
let (rg, gb) = {
let ins: Vec<usize> = buffer
.trim()
.split(' ')
.map(|s| s.parse::<usize>().unwrap())
.collect();
(ins[0], ins[1])
};
if rhave + rg < rneed || bhave + gb < bneed {
println!("-1");
return;
}
let rdef = if rhave < rneed { rneed - rhave } else { 0 };
let bdef = if bhave < bneed { bneed - bhave } else { 0 };
if ghave + (rg - rdef) + (gb - bdef) < gneed {
println!("-1");
return;
}
let gdef = if ghave < gneed { gneed - ghave } else { 0 };
println!("{}", rdef + gdef + bdef);
}