#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
template < class S, class T> inline S divup_L( S a, T b) {
return ( a+ b- 1 ) / b;
}
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
class Solution{
public :
int minimumSwap( string s1, string s2) {
int i;
int N = s1.size ( ) ;
int xy = 0 ;
int yx = 0 ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
if ( s1[ i] == 'x' && s2[ i] == 'y' ) {
xy++ ;
}
if ( s1[ i] == 'y' && s2[ i] == 'x' ) {
yx++ ;
}
}
if ( ( xy + yx) % 2 ) {
return - 1 ;
}
return ( divup_L( xy,2 ) ) + ( divup_L( yx,2 ) ) ;
}
}
;
// cLay varsion 20191102-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// class Solution {
// public:
// int minimumSwap(string s1, string s2) {
// int N = s1.size(), xy = 0, yx = 0;
// rep(i,N){
// if(s1[i] == 'x' && s2[i] == 'y') xy++;
// if(s1[i] == 'y' && s2[i] == 'x') yx++;
// }
// if((xy + yx) % 2) return -1;
// return (xy /+ 2) + (yx /+ 2);
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnRlbXBsYXRlPGNsYXNzIFMsIGNsYXNzIFQ+IGlubGluZSBTIGRpdnVwX0woUyBhLCBUIGIpewogIHJldHVybiAoYStiLTEpL2I7Cn0KI2RlZmluZSBtYWluIGR1bW15X21haW4KaW50IG1haW4oKXsKICByZXR1cm4gMDsKfQojdW5kZWYgbWFpbgpjbGFzcyBTb2x1dGlvbnsKICBwdWJsaWM6CiAgaW50IG1pbmltdW1Td2FwKHN0cmluZyBzMSwgc3RyaW5nIHMyKXsKICAgIGludCBpOwogICAgaW50IE4gPSBzMS5zaXplKCk7CiAgICBpbnQgeHkgPSAwOwogICAgaW50IHl4ID0gMDsKICAgIGZvcihpPSgwKTtpPChOKTtpKyspewogICAgICBpZihzMVtpXSA9PSAneCcgJiYgczJbaV0gPT0gJ3knKXsKICAgICAgICB4eSsrOwogICAgICB9CiAgICAgIGlmKHMxW2ldID09ICd5JyAmJiBzMltpXSA9PSAneCcpewogICAgICAgIHl4Kys7CiAgICAgIH0KICAgIH0KICAgIGlmKCh4eSArIHl4KSAlIDIpewogICAgICByZXR1cm4gLTE7CiAgICB9CiAgICByZXR1cm4gKGRpdnVwX0woeHksMikpICsgKGRpdnVwX0woeXgsMikpOwogIH0KfQo7Ci8vIGNMYXkgdmFyc2lvbiAyMDE5MTEwMi0xCgovLyAtLS0gb3JpZ2luYWwgY29kZSAtLS0KLy8gI2RlZmluZSBtYWluIGR1bW15X21haW4KLy8ge30KLy8gI3VuZGVmIG1haW4KLy8gCi8vIGNsYXNzIFNvbHV0aW9uIHsKLy8gcHVibGljOgovLyAgIGludCBtaW5pbXVtU3dhcChzdHJpbmcgczEsIHN0cmluZyBzMikgewovLyAgICAgaW50IE4gPSBzMS5zaXplKCksIHh5ID0gMCwgeXggPSAwOwovLyAgICAgcmVwKGksTil7Ci8vICAgICAgIGlmKHMxW2ldID09ICd4JyAmJiBzMltpXSA9PSAneScpIHh5Kys7Ci8vICAgICAgIGlmKHMxW2ldID09ICd5JyAmJiBzMltpXSA9PSAneCcpIHl4Kys7Ci8vICAgICB9Ci8vICAgICBpZigoeHkgKyB5eCkgJSAyKSByZXR1cm4gLTE7Ci8vICAgICByZXR1cm4gKHh5IC8rIDIpICsgKHl4IC8rIDIpOwovLyAgIH0KLy8gfTsK