Given an array of strings, group anagrams together and analyze the time complexity of your approach.
Implement group_anagrams(strings) and return a list of groups. Each group must contain strings that are anagrams of one another, preserving the original order within each group and ordering groups by the first input string assigned to them. Assume strings contain lowercase English letters.
def group_anagrams(strings):