Necklace

Luogu
IDLGP10476
Time1000ms
Memory512MB
DifficultyP5
哈希 hashing双指针 two-pointer
有一天,袁同学绵了一条价值连城宝石项链,但是,一个严重的问题是,他竟然忘记了项链的主人是谁!在得知此事后,很多人向同学发来了很多邮件,都说项链是自己的,要求他归还(显然其中最多只有一个人说了真话)。袁同学要求每个人都写了一段关于自己项链的描述: 项链上的宝石用数字 $0$ 至 $9$ 来表示。一个对于项链的表示就是从项链的某个宝石开始:顺指针绕一圈,沿途记下经过的宝石,比如如下项链: ![](https://cdn.luogu.com.cn/upload/image_hosting/57501u19.png) 它的可能的四种表示是 $0123$、$1230$、$2301$、$3012$。 袁同学现在心急如焚,于是他找到了你,希望你能够编一个程序,判断两个给定的描述是否代表同一个项链(注意,项链是不会翻转的)。 ## Input 输入文件只有两行,每行一个由 $0$ 至 $9$ 组成的字符串,描述一个项链的表示(保证项链的长度是相等的)。 ## Output 如果两条项链不可能同构,那么输出 `No`,否则的话,第一行输出一个 `Yes` 第二行输出该项链的字典序最小的表示。 [samples] ## Note 设 $L =$ 项链长度,则 $1\leq L \leq 1000000$。
Samples
Input #1
2234342423 
2423223434
Output #1
Yes
2234342423
API Response (JSON)
{
  "problem": {
    "name": "Necklace",
    "description": {
      "content": "有一天,袁同学绵了一条价值连城宝石项链,但是,一个严重的问题是,他竟然忘记了项链的主人是谁!在得知此事后,很多人向同学发来了很多邮件,都说项链是自己的,要求他归还(显然其中最多只有一个人说了真话)。袁同学要求每个人都写了一段关于自己项链的描述: 项链上的宝石用数字 $0$ 至 $9$ 来表示。一个对于项链的表示就是从项链的某个宝石开始:顺指针绕一圈,沿途记下经过的宝石,比如如下项链: ![](",
      "description_type": "Markdown"
    },
    "platform": "Luogu",
    "limit": {
      "time_limit": 1000,
      "memory_limit": 524288
    },
    "difficulty": {
      "LuoguStyle": "P5"
    },
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "LGP10476"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "有一天,袁同学绵了一条价值连城宝石项链,但是,一个严重的问题是,他竟然忘记了项链的主人是谁!在得知此事后,很多人向同学发来了很多邮件,都说项链是自己的,要求他归还(显然其中最多只有一个人说了真话)。袁同学要求每个人都写了一段关于自己项链的描述:\n\n项链上的宝石用数字 $0$ 至 $9$ 来表示。一个对于项链的表示就是从项链的某个宝石开始:顺指针绕一圈,沿途记下经过的宝石,比如如下项链:\n\n![](...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments