//整体思路:先将所有输入保存下来,然后剔除前后引号,
//并记录位置,然后合并引号之间的字符串,然后输出
#include<bits/stdc++.h>
using namespace std;
int main()
{
    vector<string> v1,v2;
    vector<int> vn;
    string tmp1;
    while(cin>>tmp1)
    {
        v1.push_back(tmp1);
            if(cin.get()=='\n')
            {
                for(int i=0;i<v1.size();i++)
                {
                    if(v1[i][0]=='"')
                    {
                        v1[i].erase(0,1);//剔除前引号,并用vn记录位置
                        vn.push_back(i);
                    }
                    if(v1[i][v1[i].size()-1]=='"')
                    {
                        v1[i].erase(v1[i].end()-1,v1[i].end());//剔除后引号,并用vn记录位置
                        vn.push_back(i);
                    }
                }
                for(int j=0;j<vn.size();j+=2)//两个位置为一组引号,所以j+=2
                {

                    string tmp2;

                    for(int k=vn[j];k<vn[j+1];k++)//合并引号之间的字符串
                    {
                        tmp2+=v1[k];
                        tmp2+=" ";
                    }
                    tmp2+=v1[vn[j+1]];//还要加上后引号所在的字符串
                    v1[vn[j]]=tmp2;//将合并后的字符串赋值给前引号开始的位置,
                }
                if(vn.size())//这里面是为了删除引号中间多余的字符串(包括后引号所在的字符串)
                {
                    int kk=vn.size()-1;
                    for(int k=kk;k>0;k-=2)
                    {
                        v1.erase(v1.begin()+vn[k-1]+1,v1.begin()+vn[k]+1);
                    }
                }
                //剩下的就是正确的命令,输出就行了
                cout<<v1.size()<<endl;
                for(auto x:v1)
                {
                    cout<<x<<endl;
                }
            }
    }
}