Since you have an inconsistent format, why not make it consistent? rename your columns to have a unique name:
df.rename(columns={'B': 'A'}).at['Total', 'A']
This is handy to generalize to multiple aliases:
aliases = ['B', 'C', 'D']
df.rename(columns=dict.fromkeys(aliases, 'A')).at['Total', 'A']
further generalization
Alternatively, using an index intersection, which also enables you to pass an arbitrary number of aliases:
df.at['Total', next(iter(df.columns.intersection(['A', 'B'])))]
Note that in case of multiple matches (e.g if you have both A and B) this gives you the first match in order of the DataFrame's columns. If you want the first match in a custom order:
# first try to match B, then A
aliases = ['B', 'A']
df.at['Total', next(iter(pd.Index(aliases).intersection(df.columns)))]