/*
using namespace std;
class mystring{
char str[21]; int maxsize; int last;
public:
mystring(){
last=-1;
axsize=21;
str[0]='\0';
}
mystring(char *s); ~mystring(){}
void show(){
//如需重载<<,则请参见9.3节,暂时未学到,替代方法是改用show()函数
cout<<str<<'\t';
}
bool operator<(mystring &);
mystring & operator=(char * ms);
//这里重载的=是把C风格字符串赋给mystring
};
mystring:: mystring(char *s){//当C字符串过长,初始化时采用截尾处理
last=-1;
maxsize=21;
do{
last++;
str[last]=s[last];
}while(s[last]!='\0'&&last<maxsize-1);
str[last] ='\0'; //截尾处理时,必须加串结束符
}
mystring & mystring::operator=(char * ms){
//这里返回值为引用,不调用复制构造函数
last=-1;
do{
last++;
str[last]=ms[last];
}while(ms[last]!='\0'&&last<maxsize-1);
str[last] ='\0'; //截尾处理时,必须加串结束符
return *this;
}
bool mystring::operator<(mystring & ms){ //重载<运算符
int i=0,k;
do{
k=str[i]-ms.str[i];
i++;
}while(k==0&&i<last&&i<ms.last);
if(k<0) return true;
if(i==last&&i!=ms.last) return true;
return false;
}
*/
using namespace std;
char ss[101][101];
int main()
{
string str[101];
getline(cin,str[1]);
getline(cin,str[2]);
//cin>>str[2]; 读空格;
//str[1]=str[2]; //复制
//gets(ss[1]);
//gets(ss[2]);
//str[1].erase(2); 只保留参数内的字符
//cout<<str[1].compare(str[2])<<endl; 判断字典序,大出>0的值,小就出<0
//if(!str[1].empty()) cout<<1<<endl; 判断空
//if(str[1]==str[2]) cout<<"yes"<<endl;
//str[1]+=str[2]; //合并
//cout<<str[1].substr(1,4)<<endl; 0为起始下标,两个参数分别从几开始,返回几个字符
cout<<str[1].size()<<"\n"<<str[1];
//cout<<ss[1]<<"\n"<<ss[2]<<endl;
}