from itertools import product
def generate_combinations(N, M, strings):
# Create a list to store the possible characters for each position
positions = [set(s) for s in strings]
# Use itertools.product to generate all combinations of characters
combinations = product(*positions)
# Filter out duplicate combinations and join characters to form strings
unique_combinations = {''.join(comb) for comb in combinations}
# Sort the unique combinations and return
return sorted(unique_combinations)
# Example usage
N, M = map(int, input().split())
strings = [input() for _ in range(N)]
output = generate_combinations(N, M, strings)
for comb in output:
print(comb)
ZnJvbSBpdGVydG9vbHMgaW1wb3J0IHByb2R1Y3QKCmRlZiBnZW5lcmF0ZV9jb21iaW5hdGlvbnMoTiwgTSwgc3RyaW5ncyk6CiAgICAjIENyZWF0ZSBhIGxpc3QgdG8gc3RvcmUgdGhlIHBvc3NpYmxlIGNoYXJhY3RlcnMgZm9yIGVhY2ggcG9zaXRpb24KICAgIHBvc2l0aW9ucyA9IFtzZXQocykgZm9yIHMgaW4gc3RyaW5nc10KICAgIAogICAgIyBVc2UgaXRlcnRvb2xzLnByb2R1Y3QgdG8gZ2VuZXJhdGUgYWxsIGNvbWJpbmF0aW9ucyBvZiBjaGFyYWN0ZXJzCiAgICBjb21iaW5hdGlvbnMgPSBwcm9kdWN0KCpwb3NpdGlvbnMpCiAgICAKICAgICMgRmlsdGVyIG91dCBkdXBsaWNhdGUgY29tYmluYXRpb25zIGFuZCBqb2luIGNoYXJhY3RlcnMgdG8gZm9ybSBzdHJpbmdzCiAgICB1bmlxdWVfY29tYmluYXRpb25zID0geycnLmpvaW4oY29tYikgZm9yIGNvbWIgaW4gY29tYmluYXRpb25zfQogICAgCiAgICAjIFNvcnQgdGhlIHVuaXF1ZSBjb21iaW5hdGlvbnMgYW5kIHJldHVybgogICAgcmV0dXJuIHNvcnRlZCh1bmlxdWVfY29tYmluYXRpb25zKQoKIyBFeGFtcGxlIHVzYWdlCk4sIE0gPSBtYXAoaW50LCBpbnB1dCgpLnNwbGl0KCkpCnN0cmluZ3MgPSBbaW5wdXQoKSBmb3IgXyBpbiByYW5nZShOKV0KCm91dHB1dCA9IGdlbmVyYXRlX2NvbWJpbmF0aW9ucyhOLCBNLCBzdHJpbmdzKQpmb3IgY29tYiBpbiBvdXRwdXQ6CiAgICBwcmludChjb21iKQ==