create calculated members for each sprint group (4.9.1, 4.9.2., 4.9.3. etc) in Sprint dimension based on the sprint number.
For example, a calculated member for all 4.9.1. sprints would be the following:
Aggregate( Filter( [Sprint].[Sprint].Members, [Sprint].CurrentHierarchyMember.Name MATCHES "4.9.1.*") ))
When a new 4.9.1. sprint will be added, it would be included in this calculation automatically.
Though, when a new sprint series is started (for instance, 4.9.9.), a new calculated member should be created (filtering sprints by 4.9.9. in this case).
Use those calculated members instead of default sprints in report rows.
How would you automatically create the new sprint groups? It’s unworkable to have to adjust the report for each new sprint.