算法思路:

1.你可以假设s可以变换到t
2.只要对t进行反向操作就可以变回s
3.也就是看t的最后一个字符
	if(t[last]=='A')
    	直接删除
	else
    	先删除还要反转字符串
4.直到s.size()==t.size()

代码实现:

#include<iostream>
#include<algorithm>
#include<vector>
#include<math.h>
#include<cfloat>
#include<set>
#include<unordered_map>
#include<string>
using namespace std;




void solve() {
    string s, t;
    cin >> s >> t;
    int sz_s = s.size(),sz_t=t.size();
    if(sz_t<sz_s){
        cout << "Impossible";return;
    }
    while (sz_s != sz_t) {
        //删除t串的末尾
        bool revesed = (t[sz_t - 1] == 'B');
        t.erase(sz_t-1,1);
        if (revesed) { reverse(t.begin(),t.end()); }
        sz_t = t.size();
    }
    if (t == s)    cout << "Possible";
    else cout << "Impossible";

}


int main() {
    std::ios::sync_with_stdio(false); std::cin.tie(0);
    solve();
    return 0;
}