#include #include #include #include #include #include #include #include #include #include #include #include #include #pragma warning(disable:4996) typedef long long ll; #define MIN(a, b) ((a)>(b)? (b): (a)) #define MAX(a, b) ((a)<(b)? (b): (a)) #define LINF 9223300000000000000 #define INF 2140000000 const long long MOD = 1000000007; using namespace std; int x,y,z; void calc( char* str0, int p0, ll& dist0, ll& dist1 ) { if(str0[0]=='A') { dist0+=p0; dist1+=(x-p0); } else if(str0[0]=='B') { dist0+=p0; dist1+=(y-p0); } else { dist0+=p0; dist1+=(z-p0); } return; } int main(int argc, char* argv[]) { scanf("%d%d%d", &x, &y, &z); char str0[5]={0}, str1[5]={0}; int p0, p1; scanf("%s %d", str0, &p0); scanf("%s %d", str1, &p1); int cnt[3]={0}; cnt[str0[0]-'A']++; cnt[str1[0]-'A']++; ll dist=LINF; if(str0[0]==str1[0]) { dist = abs(p0-p1); } { ll dist00=0, dist01=0, dist10=0, dist11=0; calc(str0, p0, dist00, dist01); calc(str1, p1, dist10, dist11); dist=MIN(dist, dist00+dist10-1); dist=MIN(dist, dist01+dist11+1); int k; for(k=0; k<3; k++) { ll L=(k==0? x: (k==1? y: z)); dist=MIN(dist, dist00+dist11+L); dist=MIN(dist, dist10+dist01+L); } printf("%lld\n", dist); } return 0; }