#include <bits/stdc++.h>
using
namespace
std;
int
solve(string s, string t)
{
int
n = s.size();
string ss = s, tt = t;
sort(ss.begin(), ss.end()), sort(tt.begin(), tt.end());
if
(ss != tt) {
return
-1;
}
int
ans = n;
int
left = 0, right = n - 1;
reverse(t.begin(), t.end());
while
(left < right) {
int
mid = (left + right) / 2;
int
cur = n - 1;
for
(
auto
ch : t) {
if
(cur == mid - 1)
break
;
if
(ch == s[cur]) {
--cur;
}
}
if
(cur == mid - 1) {
right = mid;
ans = right;
}
else
{
left = mid + 1;
}
}
return
ans;
}
int
main()
{
string s =
"abab"
;
string t =
"abba"
;
cout << solve(s, t);
return
0;
}
#include <bits/stdc++.h>
using
namespace
std;
int
solve(string s, string t)
{
int
n = s.size();
string ss = s, tt = t;
sort(ss.begin(), ss.end()), sort(tt.begin(), tt.end());
if
(ss != tt) {
return
-1;
}
int
ans = n;
int
left = 0, right = n - 1;
reverse(t.begin(), t.end());
while
(left < right) {
int
mid = (left + right) / 2;
int
cur = n - 1;
for
(
auto
ch : t) {
if
(cur == mid - 1)
break
;
if
(ch == s[cur]) {
--cur;
}
}
if
(cur == mid - 1) {
right = mid;
ans = right;
}
else
{
left = mid + 1;
}
}
return
ans;
}
int
main()
{
string s =
"abab"
;
string t =
"abba"
;
cout << solve(s, t);
return
0;
}