A research laboratory of a world-leading automobile company has received an order to create a special transmission mechanism, which allows for incredibly efficient kickdown — an operation of switching to lower gear. After several months of research engineers found that the most efficient solution requires special gears with teeth and cavities placed non-uniformly. They calculated the optimal flanks of the gears. Now they want to perform some experiments to prove their findings.

The first phase of the experiment is done with planar toothed sections, not round-shaped gears. A section of length n consists of n units. The unit is either a cavity of height h or a tooth of height 2h. Two sections are required for the experiment: one to emulate master gear (with teeth at the bottom) and one for the driven gear (with teeth at the top).

There is a long stripe of width 3h in the laboratory and its length is enough for cutting two engaged sections together. The sections are irregular but they may still be put together if shifted along each other.

The stripe is made of an expensive alloy, so the engineers want to use as little of it as possible. You need to find the minimal length of the stripe which is enough for cutting both sections simultaneously.

Input

The input file contains several test cases, each of them as described below.

There are two lines in the input, each contains a string to describe a section. The first line describes master section (teeth at the bottom) and the second line describes driven section (teeth at the top). Each character in a string represents one section unit — 1 for a cavity and 2 for a tooth. The sections can not be flipped or rotated.

Each string is non-empty and its length does not exceed 100.

Output

For each test case, write to the output a line containing a single integer number — the minimal length of the stripe required to cut off given sections.

Sample Input

2112112112
2212112
12121212
21212121
2211221122
21212

Sample Output

10
8
15

HINT

相当于两个滑块,一个不懂一个动,求最小长度。下面的代码可以更简洁一点,就是把重复的地方封装成函数,可以省不少代码量。

Accepted

#include<stdio.h>
#include<stdlib.h>
#include<string.h> int main()
{
char a[101];
char b[101];
char c[201];
while (scanf("%s%s", a, b) != EOF)
{
int lena = strlen(a);
int lenb = strlen(b);
int min = lena+lenb; for (int i = 0;i <= lena; i++)
{
int flag = 0;
memset(c, '\0', sizeof(c));
strcpy(c, a);
for (int j = 0;j < lenb;j++)
{
if (c[j + lena - i] != '\0')
{
c[j + lena - i] += b[j] - '0';
if (c[j + lena - i] > '3')
{
flag = 1;break;
}
}
else c[j + lena - i] = b[j];
}
if (!flag)min = strlen(c) < min ? strlen(c) : min;
}
for (int i = 0;i <= lenb;i++)
{
int flag = 0;
memset(c, '\0', sizeof(c));
strcpy(c, b);
for (int j = 0;j < lena;j++)
{
if (c[j + lenb - i] != '\0')
{
c[j + lenb - i] += a[j] - '0';
if (c[j + lenb - i] > '3')
{
flag = 1;break;
}
}
else c[j + lenb - i] = a[j];
}
if (!flag)min = strlen(c) < min ? strlen(c) : min;
}
printf("%d\n",min);
}
}

最新文章

  1. RequireJS中的require如何返回模块
  2. CentOs6.5下安装svn
  3. jsp通过s:hidden传值给后台,后台数据出现了若干逗号问题
  4. MySQL_财务统计各产品品类各城市上周收入毛利表_20161202
  5. navicat premium 导出表结构
  6. 在C#中调用VBScript和JavaScript等脚本的实现
  7. java静态代码块、初始化块和构造方法的执行顺序
  8. 精美jQuery插件及源码 前端开发福利
  9. 【转】 管理CPU 亲和性
  10. php Late Static Bindings延迟静态绑定
  11. bottle + vue.js 打造你的单页应用
  12. mysql 统计 每天累计用户数
  13. 关于html5调用手机相机(原创)
  14. 原生JS实现几个常用DOM操作API
  15. [NOI 2010]超级钢琴
  16. jQuery循环遍历取值
  17. DAY 22初识面向对象
  18. Python课程第二天作业
  19. Note | Git
  20. mysql启动事件

热门文章

  1. 1.3.1 apache的配置(上)
  2. kubernetes Pod亲和性
  3. PAT-1154(Vertex Coloring )+map使用+vector建图+set的使用
  4. rsyslog日志总结
  5. 从零学脚手架(四)---babel
  6. JS获取时间日期常用方法
  7. Elasticsearch 复合查询——多字符串多字段查询
  8. MySQL入门(6)——流程控制
  9. arcgis10.2 全套安装教程
  10. 【odoo14】第二十一章、性能优化