#L2815. 「eJOI2018」AB 串

「eJOI2018」AB 串

题目描述

题目译自 eJOI2018 Problem C. AB-Strings

你有两个字符串 sstt,它们其中仅包含字母 ab
你可以多次进行如下操作:选出一个 ss 的前缀和一个 tt 的前缀并交换它们。(注意,这个前缀既可以为空也可以为整个串)

你的任务是找出一个操作序列使得进行这些操作后,一个字符串只包含字符 a,而另一个只包含字符 b

你应该尽可能的进行最少的操作次数,但非最优解仍可能得到一部分分数,详情见「数据范围与提示」一栏。


输入格式

输入两行为两个字符串 ss, tt


输出格式

输出第一行为一个整数 nn0n5×1050 \leq n \leq 5 \times 10^5),表示操作总数。

接下来的 nn 行,每行包含两个整数 aia_i, bib_i,分别为 ss, tt 在这次交换中的前缀长度。

如果有多种可能的方案,则可以输出任意一种。


样例 1

输入

bab
bb

输出

2
1 0
1 3

在这个样例中,首先把第一个串 11 个长度的前缀与第二个串 00 个长度的前缀交换,即将 b 插入第二个串开头。这时两个串变成了 abbbb。接下来把第一个串 11 个长度的前缀与第二个串 33 个长度的前缀交换,即交换 abbb,此时两个串变成了 bbbba ,达成目标。


样例 2

输入

bbbb
aaa

输出

0

直接就达成了目标。


数据范围与提示

计分策略

nn 为你给出的操作数量,mm 为标准答案。

  • 如果所有任务中 n=mn = m,那么将得到 100%100\% 的分数。
  • 如果所有任务中 nm+2n \leq m + 2,那么将得到 70%70\% 的分数。(四舍五入到最接近的整数)
  • 如果所有任务中 n2m+2n \leq 2m + 2,那么将得到 50%50\% 的分数。(四舍五入到最接近的整数)
  • 如果所有任务中 n5×105n \leq 5 \times 10^5,那么将得到 30%30\% 的分数。(四舍五入到最接近的整数)
  • 如果至少一个任务中 n>5×105n > 5 \times 10^5,那么将得到 0%0\% 的分数。

对于 100%100\% 的数据,保证 1s,t2×1051 \leq |s|, |t| \leq 2 \times 10^5s|s|, t|t| 分别代表 ss, tt 的长度,且保证至少有一个串中包含至少一个字符 a,至少一个串中包含至少一个字符 b


数据限制

子任务编号 分数 限制
0 样例测试
1 5 $1 \leq
2 10
3 20
4
5
6 25 无特殊限制