Следующее является рабочим, но, вероятно, довольно неэффективным решением.
a = ["my_prefix_what_ever", "my_prefix_what_so_ever", "my_prefix_doesnt_matter"]
b = zip(*a)
c = [x[0] for x in b if x==(x[0],)*len(x)]
result = "".join(c)
Для небольших наборов строк вышеописанное не является проблемой вообще. Но для больших наборов я лично написал бы другое, ручное решение, которое проверяет каждый символ один за другим и останавливается, когда есть различия.
Алгоритмически это приводит к той же процедуре, однако можно избежать создания списка c
.