#include <iostream>
#include <string>

class A {
public:
    //构造函数
    A(const std::string& str)
    {
        _s = new std::string(str);
    }
    A(){}
    //重载赋值运算
    void operator=(const std::string& str)
    {
        if (_s) delete _s;
        _s = new std::string(str);
    }
    //移动构造函数
    A(std::string&& str)
    {
        if (_s) delete _s;
        _s = &str;
        //delete& str;
    }
    std::string s() const {
        return *_s;
    }
private:
    std::string* _s;
};

int main() {
    std::string input;
    std::cin >> input;
    A a(input);
    A b(std::move(a));
    std::cout << b.s() << std::endl;
    A c;
    c = std::move(b);
    std::cout << c.s() << std::endl;
    return 0;
}