最长非公共子序列
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

Lemon 丢给你两个字母序列 s_1s_2 ,并无情地交给了你一个奇怪的任务——求最长非公共子序列。
序列 a 是 b 的子序列,当且仅当从 b 中删除一些元素(可以是零个或所有)能得到 a。
例如:
我们可以通过从 "abcde" 中删除 "b" 和 "d" 得到 "ace",因此 "ace" 是 "abcde" 的子序列。
同理 "abcde","e" 和 空串 都是 "abcde" 的子序列;
但 "abdc" 不是 "abcde" 的子序列。
序列 c 是 s_1s_2 的非公共子序列当且仅当它满足以下条件中的任何一个:
  • c 是 s_1 的子序列但不是 s_2 的子序列;
  • c 是 s_2 的子序列但不是 s_1 的子序列。
s_1s_2 的非公共子序列可能有很多,你只需要求出其中长度最长的非公共子序列的长度。

输入描述:

第一行包含一个字符串 s_1 ,第二行包含一个字符串 s_2。 ()
输入保证 s_1s_2 均只包含小写字母。

输出描述:

在一行输出一个整数,表示最长非公共子序列的长度。
特别地,如果不存在非公共子序列,输出 -1 。
示例1

输入

复制
aba
abc

输出

复制
3
示例2

输入

复制
lemon
lemon

输出

复制
-1

备注:

对于第一个样例:非公共子序列有:"c","ba","bc","aba","abc",其中长度最大为 3。
对于第二个样例:找不到任何非公共子序列。