#include <bits/stdc++.h>
using namespace std;
string a[2];
int ans = 0;
void go1(int x, int y, int nx, int ny, int nnx, int nny) {
  a[x][y] = 'X';
  a[nx][ny] = 'X';
  a[nnx][nny] = 'X';
}
void go(int x, int y) {
  if (y >= a[0].size() - 1) {
    return;
  }
  if (a[x][y] == 'X') {
    if (x == 0) {
      go(1, y);
    } else {
      go(0, y + 1);
    }
  } else {
    if (x == 0) {
      if (a[1][y] == '.' && a[0][y + 1] == '.') {
        go1(x, y, 1, y, 0, y + 1);
        ans += 1;
        go(1, y + 1);
      } else if (a[1][y] == '.' && a[1][y + 1] == '.') {
        go1(x, y, 1, y, 1, y + 1);
        ans += 1;
        go(0, y + 1);
      } else if (a[0][y + 1] == '.' && a[1][y + 1] == '.') {
        go1(x, y, 1, y + 1, 0, y + 1);
        ans += 1;
        go(0, y + 2);
      } else {
        go(0, y + 1);
      }
    } else {
      if (a[1][y + 1] == '.' && a[0][y + 1] == '.') {
        go1(x, y, 1, y, 0, y + 1);
        ans += 1;
        go(0, y + 2);
      } else {
        go(0, y + 1);
      }
    }
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cin >> a[0] >> a[1];
  for (int i = 0; i < 2; i++) {
    for (int j = 0; j < a[0].size(); j++) {
      if (a[i][j] == '0') a[i][j] = '.';
    }
  }
  go(0, 0);
  cout << ans << '\n';
}
