#include<cstdio>
#include<algorithm>
#include<string.h>
#include<map>
#define INF 987654321
int DT[5010][2][10], len, ans, T[4][10] = {
    {0,2,2,8,5,5,7,7,8,9},
    {0,8,3,4,4,8,8,9,8,9},
    {1,1,8,8,8,8,8,9,8,9},
    {0,8,8,8,8,6,6,9,8,9} };
   //0,1,2,3,4,5,6,7,8,9
char DNA[2][5050];
std::map<char, int> C;
int max(int a, int b){ return a>b?a:b; }
int solve(int k, int t, int s)
{
    if( k == len ) return s==7 ? 0 : -INF;
    if( s == 8 ) return -INF;
    if( s == 9 ) return -1;
    return max( solve(k+1,0,T[C[DNA[t][k]]][s]), solve(k+1,1,T[C[DNA[t][k]]][s]) )+1;
}
int main()
{
    freopen(".25.in","r",stdin);
    scanf("%s%s",DNA[0],DNA[1]);
    freopen(".25.out","w",stdout);
//    printf("%d %d\n", strlen(DNA[0]), strlen(DNA[1]));
    C['A']=0, C['T']=1, C['G']=2, C['C']=3;
    len = strlen(DNA[0]);
    for(int i = 0 ; i < len ; i++ )
    {
        if( DNA[0][i] == 'G' ) ans = max(ans,max(solve(i,0,0),0));
        if( DNA[1][i] == 'G' ) ans = max(ans,max(solve(i,1,0),0));
    }
    printf("%d", ans);
}
