[SCJP] dúvida pool de strings

OLá estou com uma dúvida no seguinte exercício do TestKiller.

A pergunta é: Quantos objetos String são criados quando esse método é chamado?

public String makinStrings() { String s = "Fred"; s = s + "47"; s = s.substring(2, 5); s = s.toUpperCase(); return s.toString(); }

Eu achei que fosse 5, mas a resposta correta indica que na verdade são 3…
Alguém consegue entender por que são 3 e não 4 ou talvez até 5?

ABs.

http://www.guj.com.br/posts/list/116352.java#629544
http://www.guj.com.br/posts/list/198921.java#999883