The program below uses six temporary variables a, b, c, d, e, f.

a = 1 b = 10 c = 20 d = a+b e = c+d f = c+e b = c+e e = b+f d = 5+e return d+f

Assuming that all operations take their operands from registers, what is the minimum number of registers needed to execute this program without spilling?