#include<bits/stdc++.h>
using namespace std;
#define ull unsigned long long
const int mod1 = 917120411;
const int mod2 = 687840301;
const int base = 13331;
//const int M = 1503;
const int N = 1e6 + 3;
ull p[N];
int l[N], r[N];
int read(){
int x = 1, s = 0;
char ch = getchar();
while(ch>'9'||ch<'0'){if(ch=='-')x=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar();}
return s *x;
}
void print(int x, int y){
for(int i = x; i < y; i++)
cout << (l[i] == -1 ? -1 : i - l[i]) <<" ";
cout << '\n';
}
map<string, int> M;
vector<string> a1, a2;
int main(){
for(string t;cin >> t, t != "$";)
a1.push_back(t);
for(string t;cin >> t, t != "$";)
a2.push_back(t);
int k1 = a1.size(), k2 = a2.size();
p[0] = 1;
for(int i = 1; i < k1; i++)
p[i] = p[i - 1] * base;
for(int i = 0; i < k1; i++){
if(!M.count(a1[i])) l[i] = -1;
else l[i] = M[a1[i]];
M[a1[i]] = i;
}
M.clear();
for(int i = k1 - 1; i >= 0; i--){
if(!M.count(a1[i])) r[i] = -1;
else r[i] = M[a1[i]];
M[a1[i]] = i;
}
M.clear();
// print(0, k2);
// for(int i = 0; i < k1; i++)
// cout << r[i] <<" ";
ull h1 = 0, h2 = 0;
for(int i = 0; i < k2; i++){
ull w;
if(!M.count(a2[i]))w = -1;
else w = i - M[a2[i]];
M[a2[i]] = i;
h2 = h2 * base + w;
h1 = h1 * base + (l[i] == -1 ? -1 : i - l[i]);
}
M.clear();
if(h1 == h2)cout << 0, exit(0);
// cout << " h2 = " << h2 <<'\n';
// cout << " h1 = " << h1 <<'\n';
for(int i = k2; i < k1; i++){
// cout << i - k2 + 1 << '\n';
int op = r[i - k2];
if(op <= k2){
h1 = h1 - (l[op] == -1 ? -1 : op - l[op]) * p[i - op - 1];
h1 = h1 - p[i - op - 1];
}
l[op] = -1;
// print(i - k2 + 1, i + 1);
h1 = h1 * base + (l[i] == -1 ? -1 : i - l[i]);
h1 = h1 - (l[i - k2] == -1 ? -1 : i - l[i]) * p[k2];
// cout << " h1 = " << h1 <<'\n';
if(h1 == h2)cout << i - k2 + 2, exit(0);
}
return 0;
}