Sachverhalt: A. A._ wurde am 18. März 2004 wegen Vergewaltigung und sexueller Nötigung zu einer Zuchthausstrafe von 4 Jahren verurteilt. Der Vollzug der Strafe wurde zugunsten einer Verwahrung aufgeschoben. B. Das Bezirksgericht Affoltern beschloss am 18. Mai 2015, dass die Verwahrung nach neuem Recht weitergeführt werde. Die dagegen gerichtete Beschwerde von A._ wies das Obergericht des Kantons Zürich am 27. April 2017 ab. Am 27. April 2018 hob das Bundesgericht den Entscheid des Obergerichts auf und wies die Sache zu neuer Entscheidung an die Vorinstanz zurück (Urteil 6B_669/2017). C. Das Obergericht fällte am 28. Februar 2020 einen neuen Entscheid. Es hob die am 18. März 2004 angeordnete Verwahrung auf und ordnete eine stationäre therapeutische Massnahme im Sinne von Art. 59 StGB an. D. A._ führt Beschwerde in Strafsachen. Er beantragt, der Beschluss des Obergerichts vom 28. Februar 2020 sei hinsichtlich der Anordnung einer stationären therapeutischen Massnahme aufzuheben und er sei aus der Massnahme zu entlassen. Eventualiter sei die Sache zur Regelung einer ambulanten therapeutischen Massnahme, subeventualiter eines offenen Vollzugs, an die Vorinstanz zurückzuweisen. Für das Verfahren vor dem Bundesgericht sei ihm die unentgeltliche Rechtspflege und Verbeiständung zu gewähren. E. Am 15. Mai 2020 entzog der Präsident der Strafrechtlichen Abteilung des Bundesgerichts der Beschwerde die aufschiebende Wirkung. In ihrer Vernehmlassung vom 24. Juni 2020 beantragt die Oberstaatsanwaltschaft des Kantons Zürich die Abweisung der Beschwerde. Das Obergericht verzichtet auf eine Stellungnahme.